준호씨의 블로그
python django 애플리케이션 Docker 이미지로 만들기 본문
Python Django를 이용해서 만드는 웹애플리케이션을 Docker 이미지로 생성하는 방법을 정리해 봅니다.
제가 개발 중인 정원사들 시즌8 출석부앱을 기준으로 합니다.
https://github.com/junho85/garden8
간단하게 요약하면 Dockerfile을 만들어주면 됩니다.
Dockerfile 만들기
"Dockerfile"이라는 파일을 만들고 다음과 같이 내용을 입력합니다.
# Use an official Python runtime as the base image
FROM python:3.8
# Set the working directory in the container
WORKDIR /app
# Copy the requirements.txt file to the container
COPY requirements.txt ./
# Install the application dependencies
RUN pip install --no-cache-dir -r requirements.txt
# Copy the application code to the container
COPY . .
# Specify the command to run when the container starts
CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000" ]
참고: https://github.com/junho85/garden8/commit/3fdf0b10a946aea8efa6a901ff65046c7d98c31a
python 3.8 버전을 이용하고 있기 때문에 python 3.8을 기본 이미지로 사용합니다.
컨테이너의 작업경로는 /app으로 설정했습니다.
의존 모듈이 정의되어 있는 requirements.txt 파일을 복사하고 모듈들을 설치해 줍니다.
COPY . . 을 하면 현재 작업 경로의 파일들을 WORK 디렉터리로 복사해 준다고 보면 됩니다.
CMD를 통해 컨테이너가 시작되었을 때 실행할 명령어를 입력합니다.
Docker image build
도커 이미지를 빌드하려면 다음과 같이 명령어를 이용할 수 있습니다.
$ docker build . -f Dockerfile --tag garden8:20230212_1
PyCharm에서 Dockerfile을 실행하려면 다음과 같이 하면 되겠습니다.
이미지가 잘 생성된 것을 볼 수 있습니다.
docker run
생성한 garden8:20230212_1 이미지를 실행시키는 명령어입니다.
$ docker run --rm -it --name garden8 -p 127.0.0.1:8000:8000 garden8:20230212_1
이렇게 하면 서버가 잘 구동됩니다.
다만 설정 파일이 없어서 오류가 발생합니다.
이건 이 애플리케이션의 예외적인 상황이라 자세히 다루지는 않겠습니다.
'개발이야기' 카테고리의 다른 글
ChatGPT API 사용해 보기 in python (2) | 2023.03.09 |
---|---|
python 버전 확인 방법. -V옵션. -VV(V 두 번)는? (0) | 2023.03.03 |
python - date range list 만들기, 100일 date list 만들기 (0) | 2023.02.08 |
python - 문자열 날짜(e.g. 2023-02-07)을 datetime, date 형태로 변경 (0) | 2023.02.07 |
Gradle test task에서 OOM이 발생한다면? 해결책과 삽질기록 (0) | 2023.01.07 |