2024. 12. 26. 21:36ㆍProject Log/학부 졸업프로젝트
도커 파일과 도커 이미지
도커 파일에 있는 명령어를 바탕으로 도커 이미지를 빌드한다. 도커 이미지를 컨테이너에서 run 할 수도 있다. 도커 이미지를 도커 허브에 push하면, 외부 서버에서 이미지를 pull 하여 사용할 수도 있다.
Dockerfile 기본 사항
Dockerfile reference(https://docs.docker.com/reference/dockerfile/)를 참고하여, instructions 의미를 정리했다. 링크에서 상세 옵션을 확인할 수 있다.
- ADD: 로컬 또는 리모트 파일 및 디렉토리 추가
- ARG: 빌드 시간 변수 사용
- CMD: 기본으로 실행할 커맨드 지정
- COPY: 파일과 디렉토리 복사
- ENTRYPOINT: 반드시 실행되어야 하는 명령
- ENV: 환경 변수 설정
- EXPOSE: 애플리케이션이 통신할 포트 지정
- FROM: 베이스 이미지로부터 새로운 빌드 단계 생성
- HEALTHCHECK: 컨테이너의 상태 체크
- LABEL: 이미지에 메타데이터 추가
- MAINTAINER: 이미지의 작성자 지정
- ONBUILD: 이미지가 빌드에 사용될 때 명령어 지정
- RUN: 빌드 커맨드 실행
- SHELL: 이미지의 기본 쉘 설정
- STOPSIGNAL: 컨테이너 종료 시 사용할 시스템 호출 신호 지정
- USER: 유저 및 그룹 ID 설정
- VOLUME: 볼륨 마운트 생성
- WORKDIR: 실행 디렉토리 변경
Django 설치
아래 커맨드로 Django를 설치하고, 제대로 설치되었는지 확인한다.
(https://docs.djangoproject.com/ko/5.1/intro/tutorial01/)
python -m pip install Django
python -m django --version
Django 프로젝트를 생성하고 실행한다. http://127.0.0.1:8000으로 접속할 수 있다.
mkdir djangotutorial
django-admin startproject mysite djangotutorial
tree djangotutorial
cd djangotutorial
python manage.py runserver
DockerHub에서 Django Dockerfile 탐색
DockerHub에서 매우 다양한 Dockerfile과 사용 방법 안내를 볼 수 있었다. 프로젝트에서 Django 프레임워크를 사용할 예정이므로, django를 검색하여 초록색 배지로 표시된 Docker official image 항목을 선택했다.
django 환경 구축을 위한 도커 파일과 사용 가이드가 나온다.
도커 파일 생성, 이미지 빌드, 실행
먼저 Dockerfile과 requirements.txt 파일을 생성한다.
touch Dockerfile
touch requirements.txt
두 파일은 django 앱 프로젝트 폴더의 루트 경로에 생성하면 된다.
Dockerfile에는 도커 허브에서 있는 Dockerfile 스크립트를 복사해서 넣었다. (https://hub.docker.com/_/django) 첫 번째 RUN 명령어는 패키지 관련 에러가 나서 지우고 테스트 해보았다. 파이썬 버전에 따라 설치할 수 있는 Django 프레임워크 버전도 제한되므로, 파이썬 버전을 3.8로 높여주었다.
FROM python:3.8
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
requirements.txt에는 아래 스크립트를 작성했다.
Django==4.1
gunicorn==20.1.0
Dockerfile을 바탕으로 도커 이미지를 빌드하는 커맨드이다.
docker build -t my-django-app .
빌드가 완료되면 Docker Desktop의 Images 탭에서 my-django-app 이미지를 확인할 수 있다.
아래는 도커 이미지를 8000 포트에서 실행하는 커맨드이다. 아래 커맨드에서 voice-django-app은 컨테이너 명, 8000은 포트 번호, my-django-app은 실행할 도커 이미지 명이다.
docker run --name voice-django-app -p 8000:8000 -d my-django-app
Docker Desktop에서 my-django-app 이미지를 사용한 voice-django-app 컨테이너가 실행된 것을 확인할 수 있다.
위의 voice-django-app 컨테이너가 실행 중이므로, localhost:8000으로 접속하면 사이트를 볼 수 있다.
To do
이번에는 도커 파일 생성, 도커 이미지 빌드, 컨테이너에서 이미지 실행에 중점을 두고 알아보았다.
이제 해야 할 것은 다음과 같다.
- Dockerfile, requirements.txt를 우리 프로젝트 환경에 맞게 수정하기
- Django 프레임워크 기초 공부하기