programing

도커를 사용할 때 mysql 연결이 닫혔습니다.

yellowcard 2023. 6. 19. 21:22
반응형

도커를 사용할 때 mysql 연결이 닫혔습니다.

도커를 사용하여 mysql에 연결하려고 할 때 문제가 발생했습니다.

내 도커 작성 파일

version: '2'
services:
  app:
    build:
      context: ./docker/app
      dockerfile: Dockerfile
    image: ebdaa-m.test.com/app
    volumes:
     - .:/var/www/html
    ports:
     - "80:80"
    networks:
     - sdnet
  node:
    build:
      context: ./docker/node
      dockerfile: Dockerfile
    image: ebdaa-m.test.com/node
    volumes:
     - .:/var/www/html
    networks:
     - sdnet
  mysql:
    image: mariadb:10.5
    ports:
     - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_DATABASE: "ecom"
      MYSQL_USER: "root"
      MYSQL_PASSWORD: "root"
    volumes:
     - mysqldata:/var/lib/mysql
    networks:
     - sdnet
  redis:
    image: redis:alpine
    volumes:
     - redisdata:/data
    networks:
     - sdnet
networks:
  sdnet:
    driver: "bridge"
volumes:
  mysqldata:
    driver: "local"
  redisdata:
    driver: "local"

이제 제가 이것을 구성하면 용기가 만들어집니다.도커 ps -a 명령을 실행하면 다음과 같은 결과가 나타납니다.

CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS                     PORTS                    NAMES
5c925d3610c0   ebdaa-m.test.com/node   "node"                   2 minutes ago   Exited (0) 2 minutes ago                            ebdaa-m-node-1
d001ed99afa4   mariadb:10.5            "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes               0.0.0.0:3306->3306/tcp   ebdaa-m-mysql-1
7f86bd9a006c   ebdaa-m.test.com/app    "/usr/bin/supervisord"   2 minutes ago   Up 2 minutes               0.0.0.0:80->80/tcp       ebdaa-m-app-1
354b5ae00e39   redis:alpine            "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes               6379/tcp                 ebdaa-m-redis-1

이제 속편 프로를 사용하여 mysql에 연결하려고 할 때.연결하기 위해 다음 자격 증명을 전달하는 중입니다.

Host: 127.0.0.1
User: root
Password: root
Port: 3306

연결을 설정할 때 다음 오류가 발생합니다.

Lost connection to MySQL server at 'reading initial communication packet', system error: 0 (2013)

Double-check the MySQL host and port settings are correct, the server is running, and that no firewall settings are blocking access to the server.

If you are connecting through an SSH tunnel, the MySQL host should be the correct address relative to the machine you're SSHing into. Using, for example, the external IP for the MySQL host rather than the local one can often be a source of problems.

도와주세요.이전에는 잘 작동했기 때문에 무엇이 문제인지 이해할 수 없습니다.

잘 부탁드립니다.

당신은 "이전에는 잘 작동했다"고 주장합니다.그 사이에 무슨 일이 있었습니까?

검사로 수행할 수 있는 작업은 프로세스가 포트 3306을 수신하고 있는지 확인하는 것입니다.

netstat -lanp | grep :3306
  • 출력이 비어 있으면 돌아가서 해당 포트에서 수신 중인 컨테이너를 확인합니다.
  • 출력에 127.0.0.1 또는 "IP 와일드카드"가 포함된 경우 연결을 다시 시도합니다.
  • 연결에 127.0.0.1이 아닌 특정 IP가 포함된 경우 해당 IP를 사용하여 연결합니다.

또한 컨테이너 내부에서 실행 중인 mariadb 버전과 컨테이너 외부의 mariadb 클라이언트 버전이 호환되는지 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/69553827/mysql-connection-closed-when-using-docker

반응형