【Docker】 MySQL 워크 벤치에 연결되지 않는다 ... DB 컨테이너의 포트 포워딩 설정
포트를 변경하고 싶지만 제대로 작동하지 않을 때의 해결 방법 참고.
좋은 방법이 있으면 알려주세요.
MySQL 컨테이너의 포트 포워딩을 변경하고 싶습니다.
# docker-compose.yml
version: "3"
services:
db:
build:
context: ./docker/mysql
container_name: db
volumes:
- db-store:/var/lib/mysql
- db-logs-store:/var/log/mysql
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
environment:
- MYSQL_DATABASE=${DB_NAME:-JETmysql}
- MYSQL_USER=${DB_USERNAME}
- MYSQL_PASSWORD=${DB_PASS}
- MYSQL_ROOT_PASSWORD=${DB_PASS}
- TZ=${TZ:-Asia/Tokyo}
ports:
- ${DB_PORT}:3307 #アクセスするポート:コンテナ内のポート
volumes:
db-logs-store:
db-store:
redis-store:
# .env
DB_CONNECTION=mysql
DB_HOST=db #0.0.0.0
DB_PORT=3307
포트 포워드는 특정 포트로 온 통신 요청을,
전송 해주는 것입니다.
보통 MySQL의 경우 3306번이 사용되지만, 경쟁을 피하고 싶은 사정으로 3307을
맞추려고 생각했습니다.
위의 YML의 포트 부분에 포트를 정의합니다.
${DB_PORT} 부분은 env 파일에서 당겨집니다.
왼쪽이 포트 포워딩 대상이고 오른쪽이 Docker 컨테이너 내부에서 사용되는 포트 번호입니다.
"로컬 포트 3307에 요청이 오면 컨테이너 내의 3307에 연결하십시오"라는 의미입니다.
컨테이너는 로컬 단말기와는 격리된 네트워크라는 위치 지정 때문에,
컨테이너 내부에서도 포트 번호가 있다는 인식입니다.
여기만 정의하면 좋게 해줄 것이라고 생각했는데,
3306 이외에서는 왠지 연결되지 않는다는 사건에 휩쓸렸습니다.
이번에는 MySQL Workbench라는 GUI를 연결하려고했습니다.
docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------
db docker-entrypoint.sh --por ... Up 3306/tcp, 33060/tcp,
0.0.0.0:3307->3307/tcp
정의된 것처럼 보입니다. .
docker run 하는 경우의 포트 지정
docker run -p 3307:3307 db
이것이 잘 작동합니다.
그렇다면 명령으로 포트를 지정하면 잘 작동합니까?
yml에 명령 추가
ports:
- ${DB_PORT}:3307 #アクセスするポート:コンテナ内のポート
command: --port 3307
잘 연결할 수 있었던 것 같습니다.
왜 포트 지정 명령이 필요한지 모르겠지만,
일단 이것으로 움직이는 것 같습니다.
Reference
이 문제에 관하여(【Docker】 MySQL 워크 벤치에 연결되지 않는다 ... DB 컨테이너의 포트 포워딩 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryuji-oda/items/c3ed1b86fe0c1f2b9058
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# docker-compose.yml
version: "3"
services:
db:
build:
context: ./docker/mysql
container_name: db
volumes:
- db-store:/var/lib/mysql
- db-logs-store:/var/log/mysql
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
environment:
- MYSQL_DATABASE=${DB_NAME:-JETmysql}
- MYSQL_USER=${DB_USERNAME}
- MYSQL_PASSWORD=${DB_PASS}
- MYSQL_ROOT_PASSWORD=${DB_PASS}
- TZ=${TZ:-Asia/Tokyo}
ports:
- ${DB_PORT}:3307 #アクセスするポート:コンテナ内のポート
volumes:
db-logs-store:
db-store:
redis-store:
# .env
DB_CONNECTION=mysql
DB_HOST=db #0.0.0.0
DB_PORT=3307
Name Command State Ports
-------------------------------------------------------------------------------------------------------
db docker-entrypoint.sh --por ... Up 3306/tcp, 33060/tcp,
0.0.0.0:3307->3307/tcp
docker run -p 3307:3307 db
이것이 잘 작동합니다.
그렇다면 명령으로 포트를 지정하면 잘 작동합니까?
yml에 명령 추가
ports:
- ${DB_PORT}:3307 #アクセスするポート:コンテナ内のポート
command: --port 3307
잘 연결할 수 있었던 것 같습니다.
왜 포트 지정 명령이 필요한지 모르겠지만,
일단 이것으로 움직이는 것 같습니다.
Reference
이 문제에 관하여(【Docker】 MySQL 워크 벤치에 연결되지 않는다 ... DB 컨테이너의 포트 포워딩 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryuji-oda/items/c3ed1b86fe0c1f2b9058
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ports:
- ${DB_PORT}:3307 #アクセスするポート:コンテナ内のポート
command: --port 3307
Reference
이 문제에 관하여(【Docker】 MySQL 워크 벤치에 연결되지 않는다 ... DB 컨테이너의 포트 포워딩 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryuji-oda/items/c3ed1b86fe0c1f2b9058텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)