본문 바로가기
국회도서관 자료검색 서비스

python django 프로젝트 Dockerfile 생성하기 #21

by 유니네 라이브러리 2024. 9. 2.

python django 프로젝트의 Dockerfile 생성하기

  • django framework의 프로젝트를 컨테이너 화하기 위한 설정을 정의한다.
  • 이 Dockerfile은 Python 3.12 기반의 컨테이너에서 django 앱을 실행하기 위한 환경을 설정한다.
  • 개발환경과 같이 Python 가상환경을 사용해 의존성을 관리하며, Nginx와 같은 외부 웹 서버 없이 django 개발 서버를 사용해 컨테이너 내부에서 애플리케이션을 직접 실행한다.
  • 개발환경과 같이 4000 포트를 통해 외부에서 접근 가능하게 하고, 컨테이너가 시작되면 django 서버가 자동으로 시작되게 한다.

django requirements.txt 생성

dockerfile 을 생성하기 전에 먼저 django 프로젝트에서 개발하면서 설치된 패키지들을 requirements.txt 파일에 저장한다.

  • 개발 가상환경으로 진입한다.
    • bin 폴더 있는 곳으로 이동하여 진입
    • source bin/activate
pubd_api % ls
bin    include    lib    pubdapi    pyvenv.cfg
pubd_api % source bin/activate
(pubd_api) pubd_api %
  • 개발 폴더로 이동한다.
    • manage.py 있는 폴더로 이동
(pubd_api) pubd_api % ls
bin    include    lib    pubdapi    pyvenv.cfg
(pubd_api) pubd_api % cd pubdapi
(pubd_api) pubdapi % ls
db.sqlite3	manage.py    pubdapi    pubdapp
(pubd_api) pubdapi %
  • pip freeze
    • 개발하면서 설치된 패키지들을 확인한다.
  • pip freeze > requirements.txt
    • 현재 패키지들의 내용이 requirements.txt 에 저장된다.
(pubd_api) pubdapi % pip freeze > requirements.txt 
(pubd_api) pubdapi % ls
db.sqlite3    manage.py    pubdapi    pubdapp    requirements.txt
(pubd_api) pubdapi %

django Dockerfile 생성

  • 파일명과 대소문자 그대로 Dockerfile을 루트 디렉터리에 신규 생성한다.
    • manage.py 있는 곳과 동일한 위치
# python 버전 설정
FROM python:3.12
EXPOSE 4000
WORKDIR /pubdapi

# Python 가상환경 설정
RUN python3 -m venv /opt/venv

# 가상환경을 PATH에 추가
ENV PATH="/opt/venv/bin:$PATH"

# Python 패키지의 목록과 버전 정보를 복사
COPY ./requirements.txt /pubdapi/requirements.txt

# Python 패키지들을 가상환경 내에 설치
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

# 개발된 소스 전체 복사
COPY . /pubdapi

# 컨테이너 기본 실행 프로그램 설정
ENTRYPOINT ["python3"]
CMD ["manage.py", "runserver", "0.0.0.0:4000"]

Dockerfile 내용

  • FROM python:3.12
    • Python 3.12 이미지를 기반으로 설정.
    • Python 3.12가 설치된 환경에서 애플리케이션을 실행할 수 있게 해 준다.
  • EXPOSE 4000
    • 컨테이너가 외부에서 접근 가능한 포트 4000으로 세팅.
    • 이 포트는 Django 개발 서버가 실행될 포트. (로컬 작업 시 4000으로 테스트 진행함)
  • WORKDIR /pubdapi
    • Docker 컨테이너 내에서 작업 디렉터리를 /sfmbapi로 설정.
    • 이후의 모든 파일 작업 명령어는 이 디렉토리 내에서 실행됨.
  • RUN python3 -m venv /opt/venv
    • 컨테이너 내에 Python 가상환경을 /opt/venv 디렉터리에 생성한다.
    • 가상환경은 애플리케이션의 Python 패키지와 종속성을 격리한다.
  • ENV PATH="/opt/venv/bin:$PATH"
    • 모든 Python 명령어(python, pip 등)가 이 가상환경을 사용하도록 PATH 환경 변수를 설정한다.
  • COPY ./requirements.txt /sfmbapi/requirements.txt
    • 로컬 머신의 requirements.txt 파일을 컨테이너의 /sfmbapi/requirements.txt로 복사한다.
    • 이 파일에는 Python 패키지의 목록과 버전 정보가 포함되어 있다.
  • RUN pip install --upgrade pip
    • pip(패키지 관리자)를 최신 버전으로 업그레이드.
  • RUN pip install -r requirements.txt
    • requirements.txt에 정의된 Python 패키지들을 가상환경 내에 설치합니다.
  • COPY . /pubdapi
    • 현재 디렉터리의 모든 파일을 컨테이너 내의 /pubdapi 디렉터리로 복사.
    • 이로써 Django 애플리케이션 코드와 설정 파일들이 컨테이너 내에 복사된다.
  • ENTRYPOINT ["python3"]
    • 컨테이너가 실행될 때 기본적으로 실행할 프로그램 지정.
    • 여기서는 Python 인터프리터(python3)가 기본 실행 프로그램으로 지정.
  • CMD ["manage.py", "runserver", "0.0.0.0:4000"]
    • 기본적으로 실행할 명령어 지정.
    • Django의 개발 서버를 실행하여, 애플리케이션이 0.0.0.0:4000에서 요청을 수신하도록 설정.
    • 0.0.0.0은 모든 네트워크 인터페이스에서 접근 가능하다는 의미.
    • 로컬에서 django 서버 띄울 때와 유사

☞ dockerfile 참조 사이트

https://docs.docker.com/reference/dockerfile/

 

☞ vue dockerfile 생성은 이전 페이지로

https://yuneenelife.tistory.com/entry/vue-cli-프로젝트-Dockerfile-생성하기-20

 

vue cli 프로젝트 Dockerfile 생성하기 #20

vue cli 프로젝트의 Dockerfile 생성하기vue cli는 기본적인 웹서버 기능도 있기 때문에 로컬 개발 시에는 웹서버가 필요 없었다.하지만 배포를 할 때에는 웹서버를 설치하고 vue 배포 파일들인 dist 폴

yuneenelife.tistory.com

마무리

이로써 django framework 프로젝트의 Dockerfile을 생성했다.

다음에는 docker desktop 설치하고 docker hub 계정 생성하여 개인 repository를 만들어본다.