자바칩
Dockerfile을 이용하여 이미지를 빌드하기 본문
728x90
1. Dockerfile 생성 (Python 3.9.13 버전과 Flask 기준)
# Python 3.9.13 slim 이미지 사용
FROM python:3.9.13-slim
# 작업 디렉토리 생성
WORKDIR /app
# 의존성 설치 (pip 먼저 requirements.txt)
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# 소스 코드 전체 복사
COPY . .
# Flask 앱 실행 (app.py 기준)
CMD ["python", "app.py"]
2. WSL2에서 명령어 실행
# 프로젝트 루트로 이동
cd /mnt/c/프로젝트
# Docker 이미지 빌드
docker build -t flask-app .
# Docker 컨테이너 실행 (포트 5000 바인딩)
docker run -p 5000:5000 flask-app
/mnt/c는 Windows의 C: 드라이브를 마운트한 위치.
예를 들어, 윈도우에서 C:\Users\user는 리눅스에서 /mnt/c/Users/user와 같다.
docker run -p 호스트포트:컨테이너포트
- 왼쪽 5000: 내 컴퓨터(호스트)의 포트 번호
- 오른쪽 5000: 컨테이너 안에서 Flask 앱이 실행되고 있는 포트 번호
“내 컴퓨터의 5000번 포트로 들어오는 요청을, 컨테이너 내부의 5000번 포트로 전달해라”
즉, Flask 앱이 컨테이너 내부에서 app.run(port=5000)으로 돌고 있을 때
내 브라우저에서 http://localhost:5000에 접속하면
→ 그 요청이 도커 컨테이너 안의 Flask 서버로 전달됨.
docker run -p 8888:5000 flask-app
- 컨테이너 안에서는 Flask가 5000번 포트에서 실행 중
- 근데 나는 호스트의 8888번 포트를 통해 접속할 수 있음
즉, 브라우저에서 http://localhost:8888 입력하면 Flask 앱이 나옴.
Flask 코드도 확인 필요
Flask가 host='0.0.0.0' 으로 바인딩되어 있어야 외부에서 접근 가능:
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)
127.0.0.1이면 컨테이너 내부에서만 접근 가능해서 외부(브라우저)에서 안 보임
'Study' 카테고리의 다른 글
RDBMS 용어와 NoSQL 용어 비교 (0) | 2025.04.02 |
---|---|
[Flask] json.dumps() vs jsonify() (0) | 2025.03.31 |
TCP 연결 과정: 3-Way & 4-Way Handshake (0) | 2025.03.13 |
VS Code에서 Python 가상환경을 선택 (0) | 2025.03.12 |
uvicorn.run()은 블로킹(blocking) 함수 (0) | 2025.03.05 |