강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이예찬님의 프로필 이미지
이예찬

작성한 질문수

실리콘밸리 엔지니어와 함께하는 Docker

Docker compose로 다양한 서비스 통합 실행

mysql 포트 사용에 관하여

해결된 질문

작성

·

46

1

강의 너무 감사합니다!

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

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

image.png


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

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


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

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

답변 2

1

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

안녕하세요 이예찬님,

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

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

이예찬님의 프로필 이미지
이예찬
질문자

답변 주셔서 감사합니다!

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

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

0

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

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

이예찬님의 프로필 이미지
이예찬

작성한 질문수

질문하기