inflearn logo
강의

Course

Instructor

Docker with Silicon Valley Engineers

Integrate and run various services with Docker compose

mysql 포트 사용에 관하여

Resolved

171

yechani99

5 asked

1

강의 너무 감사합니다!

질문사항이 있어 문의드립니다.
yml파일 내부 db: 하위 ports: 설정부분을 보면

3306:3306으로 지정되어 있습니다만,
현재 제 로컬 PC에서 mysql server가 3306포트로 실행되고 있어서 에러를 만났습니다.

image.png


그런데, 가만히 생각해보니 Flask 앱이 아닌, 제가 로컬(제 PC)에서 직접 요청을 할 일이 없는 경우라면 ports 설정이 필요한가요?

당장의 실습 환경에서 코드를 봤을 땐 호스트(로컬PC)에서 접근할 만 한 기능이 들어가 있는 것 같지는 않아서 db의 ports 설정부분을 제거하고 실행했을 땐 정상적으로 앱이 동작했습니다.


제가 생각하지 못한 필요한 경우가 있을까 궁금하여 질문드립니다.
제 로컬에서 실행되는 MySQL이 강제로 종료해도 데몬으로 등록되어있어서 계속 살아나더군요. 결국 데몬 등록을 없애고 수동으로 종료를 확인한 후에 다시 compose up --build했을 때는 됩니다.

최종적으로 질문을 정리해보자면 혹시 "호스트로 내 로컬을 지정하지 않고 (즉, ports 설정을 하지 않고) 도커 네트워크 안에서 통신하도록 구성한 상황에서 문제상황이 생긴다면 어떤 게 있을까요?" 정도 인 것 같습니다.

docker container

Answer 2

1

altoformula

안녕하세요 이예찬님,

제가 포트 부분을 넣은 이유는 현재 랩탑에서 필요할 때 데이타 베이스로 접근하기 위함이었습니다.

그렇지 않다면 필요 없습니다 ㅎㅎㅎ

0

yechani99

답변 주셔서 감사합니다!

추가적으로 구글링을 해봤는데, 보통 로컬에서 개발을 하다 보면 접근할 일이 개발 하다보면 있을 수 밖에 없을 것 같은...? 느낌이 드네요.

가능한 한 데이터베이스로 접근할 수 있도록 세팅을 해보겠습니다!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 이예찬님,

먼저 Docker 환경에서 발생할 수 있는 포트 충돌 문제에 대해 질문 주셔서 감사합니다. Docker Compose를 사용할 때 ports 설정을 통해 컨테이너의 특정 포트를 호스트의 포트와 연결해 주는데요, 이 경우 호스트 PC 내에서 이미 사용 중인 포트와 충돌할 수 있습니다. 특히, MySQL의 기본 포트 3306은 많은 사람들이 로컬 개발 환경에서 사용하기 때문에 이 오류가 발생할 수 있습니다.

ports 설정의 필요성

  1. 내부 통신: Docker 내부에서만 데이터베이스를 사용할 계획이라면 ports 설정이 꼭 필요하지 않을 수도 있습니다. 컨테이너 간의 통신은 Docker Network를 통해 이루어지며, 이는 ports 없이도 가능합니다. 컨테이너의 서비스들이 동일한 네트워크로 설정되어 있다면, localhost 대신 컨테이너 이름을 사용하여 서로 통신할 수 있습니다.

  2. 외부 접근: 만일 로컬 PC의 MySQL 클라이언트 프로그램 혹은 다른 외부 애플리케이션에서 Docker 컨테이너 내부의 데이터베이스에 접근해야 하는 경우라면 ports 설정을 해야 합니다. 그렇지 않으면 외부에서 해당 DB에 접속할 수 없습니다.

  3. 실습 및 테스트 환경: 만약 학습 중이거나 테스트 환경이라면, 내부에서만 DB를 사용하도록 설정하는 것이 관리하기 더 쉬울 수 있습니다. 필요하다면 Docker Compose의 특정 서비스에 대해 environment 설정을 통해 포트 속성을 변경할 수도 있습니다.

문제 상황

  • 포트 설정을 하지 않았을 경우 발생 가능 문제:
    • 외부에서 DB에 접속 요청이 필요할 때 연결이 되지 않습니다. 예를 들어, 특정 모니터링 도구나 데이터베이스 관리 도구를 통해 외부에서 직접 데이터베이스를 관리 및 검수하려고 할 때 접속이 불가합니다.

제가 질문자님의 상황을 고려하여 유사한 답변 링크를 추천해드리겠습니다.

포트 충돌 문제 Docker 해결 방법

위 링크에서는 Docker 환경에서 발생할 수 있는 다양한 문제와 그 해결법에 대해 상세히 다루고 있습니다. 질문자님의 현재 상황에 많은 도움이 되리라 생각합니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Jib 빌드가 83%에서 멈추는 문제 해결(windows 사용자)

1

6

0

운영환경에서의 secret 관리

0

6

1

7강 설치 질문

0

7

1

ClusterIP 실습 시 Connection refused

0

15

2

제공된 스크립트를 어디서 받을 수 있나요?

0

20

1

트랜잭션 내 Redis I/O 에 대한 궁금한점

1

25

1

Deployment 업데이트-2 해결 방식 문의

1

31

1

virtualbox 설치시

1

46

1

실행중인 컨테이너를 모두 삭제하는 방법(윈도우버전)

0

70

3

winpty docker 설정

0

62

3

vs code설치했는데도, easy docker 파일 열기에서 vs code 아이콘은 안보여요

0

44

1

aws 계정 생성 질문

1

66

1

verify.sh 4단계 실패 — Jenkins 컨테이너에서 127.0.0.1:6443 connection refused

0

62

2

섹션 2 - 9강. API 관련 질문

0

70

2

11강 [실습] Docker로 MySQL1 분만에 실행하기

0

87

2

11강 [실습] Docker로 MySQL1 분만에 실행하기

0

63

2

설치 가이드대로 해도 안되는 경우가 있더라고요

0

67

2

Github repo 404 not found

0

55

1

코드 깃허브는 없을까요?

1

65

2

@Modifying에 관하여

1

69

1

docker 마지막 실습(app(flask) + mysql) 연동 과정

1

99

2

코드자료 활용 깃

1

76

2

apache spark -> airflow

0

211

2

저만 안 되는 것인가요? ㅠㅠ

0

328

2