반응형
🚫 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를 함께 사용할 때, 실행은 되지만 접속이 안 되는 상황은 자주 발생합니다.
위의 점검 사항만 확인해도 대부분의 문제는 금방 해결할 수 있습니다.
이 글이 도움이 되셨다면 댓글이나 공감 부탁드려요! 😊
반응형
'Knowledge > IT, 인터넷' 카테고리의 다른 글
Python datetime.utcnow() DeprecationWarning 해결 방법 (0) | 2025.05.22 |
---|---|
Docker에서 시간대(TZ)를 Asia/Seoul로 변경하는 방 (1) | 2025.05.22 |
SQLite에서 PRIMARY KEY 제거하는 방법 완전 정리 (+실습 예제) (1) | 2025.05.22 |
SIM 스와핑이란? 당신의 번호를 노리는 해커의 기술 (4) | 2025.05.10 |
HSS (Home Subscriber Server)란 무엇일까? (1) | 2025.05.10 |
댓글