강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của yechani99
yechani99

câu hỏi đã được viết

Docker cùng với kỹ sư Thung lũng Silicon

Sử dụng Docker compose để tích hợp và chạy nhiều dịch vụ

mysql 포트 사용에 관하여

Đã giải quyết

Viết

·

99

1

강의 너무 감사합니다!

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

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

image.png


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

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


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

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

dockercontainer

Câu trả lời 2

1

altoformula님의 프로필 이미지
altoformula
Người chia sẻ kiến thức

안녕하세요 이예찬님,

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

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

yechani99님의 프로필 이미지
yechani99
Người đặt câu hỏi

답변 주셔서 감사합니다!

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

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

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

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

Hình ảnh hồ sơ của yechani99
yechani99

câu hỏi đã được viết

Đặt câu hỏi