본문 바로가기

Web Development/Django

[Django] docker 사용해서 django 앱 배포하기

728x90

0. docker 설치

docker을 실행시켜줘야 docker 명령어 사용 가능

 

1. Dockerfile 생성

pip list 명령어를 통해 설치된 라이브러리 버전 확인

pip list

requirements.txt에 필요한 라이브러리 및 버전 작성 (이후, pip install -r requirements.txt를 통해 해당 라이브러리들이 자동적으로 설치되게 함)

django==3.2.7
pymysql==1.0.2
pandas==1.2.1
FROM python:3.9.1

WORKDIR /web

COPY . .

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

2. docker build . 명령어를 통해 작성한 Dockerfile를 이용해서 이미지를 빌드

docker build . -t <생성될 이미지의 이름>
  • docker build <옵션> <Dockerfile 경로> 형식
  • build 다음에 적혀진 . 는 Dockerfile이 존재하는 위치를 나타낸다
  • --tag 옵션으로 이미지 이름과 태그를 설정할 수 있으며, 이미지 이름만 설정하면 태그는 latest로 설정된다
  • 마지막에 Successfully built <이미지ID> 혹은 writing image <이미지ID>가 출력되었다면 제대로 이미지가 빌드가 된 것이다

예시 )

writing image sha256:0a38b914e2cb4a0588eeb4a445e629e681a22de7855b0

naming to docker.io/library/<설정한 이미지의 이름>

 

3. 생성된 이미지가 로컬에 잘 저장되어 있는지 확인

$ docker images

 

도커 이미지 컨테이너로 실행

$ docker run -p 8000:8000 -tid <설정한 이미지 이름>

-p 8000:8000 옵션은 로컬 PC의 8000번 포트를 컨테이너의 8000번 포트에 연결한다는 의미

 

컨테이너가 정상 동작 중인지 확인

$ docker ps

STATUS가 UP 상태이면 정상 동작 중

 

4. docker-compose.yml 파일 작성

  • Docker Compose는 여러 개의 서비스를 이뤄진 애플리케이션을 하나의 YAML 파일에 정의할 수 있도록 해준다.
  • Django 프로젝트는 Django 애플리케이션과 PostgreSQL 데이터베이스 2가지 서비스로 이루어져 있기 때문에 docker-compose.yml 파일을 작성해 애플리케이션을 정의해주어야 한다. 
  • 프로젝트 최상위 디렉터리에 docker-compose.yml을 생성하고, Django 애플리케이션의 db 서비스로 PostgreSQL 데이터베이스를 정의해준다.

 

 

 

 

 

 

참고사이트

https://www.daleseo.com/docker-compose-django/

반응형