본문 바로가기
Knowledge/IT, 인터넷

Docker 컨테이너 재부팅 후 Flask 접속 불가? 원인과 해결 방법 총정리

by MoSeoPAPA 2025. 5. 22.
반응형
Docker 재부팅 후 Flask 접속 불가? 원인과 해결 방법 총정리

🚫 Docker 컨테이너 재부팅 후 Flask 접속 불가 문제 해결 가이드

🔍 문제 상황 요약

Flask를 Docker 컨테이너에 올려놓고 잘 사용하다가 컨테이너를 재부팅하면 외부에서 접속이 안 되는 현상이 발생합니다. 내부에서는 Flask가 실행되고 있지만, curl이나 브라우저에서 접속이 되지 않는 상황이죠.

📌 원인 1: Flask 기본 실행 옵션 문제

Flask를 기본 실행하면 127.0.0.1만 바인딩됩니다. 즉, 컨테이너 외부에서는 접속할 수 없습니다.

# 잘못된 실행
python app.py

✅ 해결 방법

# 바르게 실행하기
python app.py --host=0.0.0.0 --port=5000

또는 app.py 내부에 다음과 같이 명시합니다:

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

📌 원인 2: Docker 포트 매핑 누락

컨테이너는 격리된 환경이기 때문에, 포트 매핑 없이 실행하면 외부에서는 접근이 불가능합니다.

# 잘못된 실행 예시
docker run -d flask-image

✅ 해결 방법

# 외부 포트와 매핑해서 실행
docker run -d -p 5000:5000 --name flask-app flask-image

-p 외부포트:내부포트 형식으로 정확히 매핑해야 하며, Flask가 내부적으로 사용하는 포트와 맞춰야 합니다.

📌 원인 3: 클라우드 보안 그룹 / 방화벽 설정

Oracle Cloud, AWS, Azure 같은 클라우드에서는 자체적으로 방화벽이 존재합니다. 포트가 막혀 있으면 아무리 잘 띄워도 접속이 불가능합니다.

✅ 해결 방법

  • 서버 보안 그룹에서 포트 5000번 인바운드 허용
  • ufw allow 5000 같은 OS 방화벽 설정 확인
  • Docker의 네트워크 모드 설정 확인 (bridge / host)

📦 보너스: Flask Dockerfile 예시

# Dockerfile 예시
FROM python:3.9-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
# 빌드 및 실행
docker build -t flask-image .
docker run -d -p 5000:5000 --name flask-app flask-image

✅ 정리 요약

문제 원인 해결 방법
Flask 실행 IP 제한 host='0.0.0.0'으로 실행
포트 매핑 누락 -p 5000:5000 옵션으로 실행
서버 방화벽 설정 보안 그룹 및 OS 방화벽에서 포트 허용

💬 마무리

Docker와 Flask를 함께 사용할 때, 실행은 되지만 접속이 안 되는 상황은 자주 발생합니다.
위의 점검 사항만 확인해도 대부분의 문제는 금방 해결할 수 있습니다.

이 글이 도움이 되셨다면 댓글이나 공감 부탁드려요! 😊

반응형

댓글