반응형
도커를 사용할 때 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
반응형
'programing' 카테고리의 다른 글
C에서 64비트 컴파일을 검색하는 중 (0) | 2023.06.19 |
---|---|
외부 종속성 org.spring 프레임워크를 확인할 수 없습니다.부트:spring-boot-boot: 리포지토리가 정의되지 않았기 때문 (0) | 2023.06.19 |
여러 값에 일치하는 Oracle 행 삭제 (0) | 2023.06.19 |
비동기 하위 수집 데이터를 기반으로 한 VueJS 목록 정렬 (0) | 2023.06.19 |
Excel의 워크시트 암호 보호 작동 방식 (0) | 2023.06.19 |