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
마무리
이로써 django framework 프로젝트의 Dockerfile을 생성했다.
다음에는 docker desktop 설치하고 docker hub 계정 생성하여 개인 repository를 만들어본다.
'국회도서관 자료검색 서비스' 카테고리의 다른 글
docker 파일 빌드하고 태그달고 docker hub 로 push 하기 #23 (2) | 2024.09.04 |
---|---|
docker desktop 설치하고 docker hub repository 생성하기 #22 (4) | 2024.09.03 |
vue cli 프로젝트 Dockerfile 생성하기 #20 (0) | 2024.08.29 |
vue js 배포 파일 dist 생성하기 #19 (5) | 2024.08.28 |
django, vue cli 이용해서 개발한 국회도서관 자료 검색 화면 및 적용 기술 #18 (0) | 2024.08.23 |