inflearn logo
강의

Course

Instructor

Docker with Silicon Valley Engineers

Integrate and run various services with Docker compose

mysql 포트 사용에 관하여

Resolved

151

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 환경에서 발생할 수 있는 다양한 문제와 그 해결법에 대해 상세히 다루고 있습니다. 질문자님의 현재 상황에 많은 도움이 되리라 생각합니다.

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

이거 지금 부터 들어도 괜찮을까요 ?? 시간이 꽤지난거같은데 .. 뭐 최신하고 아에 안맞을까요 .

0

8

1

환경설정 스크립트에서 storageclass가 생성되지 않습니다.

0

9

2

자료를 다운로드후 압축을 풀때 오류납니다.

0

20

2

pod kubetm/app 에서 image를 갑자기 못가져 오는거 같습니다.

1

14

2

이지지 생성 노드를 커스텀 햇는데 워드프레스에 이미지 업로드가 안됨

0

17

2

3. Node Schedule 중 pod-5가 마스터 노드에 배치됩니다.

1

27

2

실제 시험에서 링크

1

26

1

volume hostpath의 강의에 관해 질문이 있습니다.

1

25

2

재고 감소와 쿠폰 발급은 왜 서로 다른 방식으로 동시성을 제어하나요?

0

29

1

n8n에서 오류가 발생했는데 어떻게 풀어야할까요?

0

27

2

소스코드즘 부탁드립니다.

0

33

1

유저 이미지 등록 에러

0

31

1

섹션12 강의에 대한 질문

0

31

1

그라파나에서 대시보드 import 실패

1

48

2

VM 내 k8s에 접속하는 이유와 방식 문의

1

34

1

!!!!!강의내용 틀린 부분 수정좀 해줘요!!!!!!!

1

33

1

강의 제작

1

58

1

image pull 에러

1

43

2

영상오류

1

51

1

NetworkPolicy에서 NamespaceSelector 설정 관련

0

49

1

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

1

63

2

코드자료 활용 깃

1

55

2

apache spark -> airflow

0

185

2

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

0

307

2