이번 포스팅은 도커, 도커컴포즈를 활용하여
장고 배포환경 구축하는 튜토리얼 입니다.
도커 + 도커컴포즈 + nividia도커 설치
- 아래 링크를 확인하면 자세한 설치 방법을 확인 할 수 있다
- 도커 설치 : https://soyoung-new-challenge.tistory.com/52
- Nvidia 도커 설치 : https://soyoung-new-challenge.tistory.com/54?category=857325
- 참고로 Nvidia 도커를 설치 하는 이유는, 도커 안에서 host의 GPU를 사용하기 위해서!
- 도커 컴포즈 설치 : https://soyoung-new-challenge.tistory.com/73
이렇게 도커, Nvidia도커, 도커 컴포즈까지 설치하면 도커 사용을 위한 환경이 셋팅이 완료된다.
배포 위한 장고 프로젝트 구성
- 현재 만들어진 장고 프로젝트가 있다면 그 프로젝트에서 진행
- 장고 프로젝트가 만들어져 있지 않다면 아래 포스팅을 참고해서 장고 프로젝트를 생성한다
- 참고 포스팅 : https://soyoung-new-challenge.tistory.com/10?category=831257
- 테스트를 위한 용도이기 때문에 간단하게 프로젝트/앱 정도로 구성을 해놓으면 된다.
장고 프로젝트 안에서 도커 파일 생성
$ cd djago_procject[장고프로젝트_폴더]
- 장고 프로젝트 폴더 속으로 접근 한다 (여기를 base_dir로 지정)
- base_dir 에서 Dockerfile을 생성한다.
$ vi Dockerfile
FROM python:3.6.5
ENV PYTHONUNBUFFERED 1
RUN mkdir /django
WORKDIR /django
ADD requirements.txt /django/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . /django/
- 위와 같이 도커 이미지를 생성하기 위한 도커 파일을 생성한다.
requirements.txt 자동 생성하는 방법
- requirements.txt에는 설치되어야 할 파이썬 패키지의 이름와 버전이 명시되어있다
- 하나하나 작성하지 않고, 현재 설치되어 있는 상태 그대로 옮기고 싶다면 아래 명령어를 입력한다
- $ pip freeze > requirements.txt
- 여기까지 완료하면 장고가 동작할 수 있도록 하는 파이썬 기반의 이미지가 생성 된다.
도커 컴포즈 파일 생성
- 도커 컴포즈를 사용하여 Django와 Nginx를 동시에 실행시키고, Django와 Nginx를 연결해주는 인터페이스인 Gunicorn도 함께 실행이 되도록 컴포즈 파일을 구성한다.
$ vi docker-compose.yml
version: '3.5'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- .:/django
- ./config/nginx:/etc/nginx/conf.d
depends_on:
- web
web:
build:
context: .
dockerfile: Dockerfile
command: gunicorn 장고프로젝트이름.wsgi:application --bind 0.0.0.0:8000
volumes:
- .:/django/
expose:
- "8000"
- 위와 같이 도커 컴포즈 파일이 작성
- 현재 2개의 서비스가 도커 컴포즈에 작성되어 있다 (nginx, web)
$ docker-compose up -build
- 도커 컴포즈 파일 작성 후 처음 이미지를 생성하기 위한 명령
$ docker-compose up
$ docker-compose down
- 한번 이미지 빌드 후에는 위와 같이 도커 컴포즈 실행, 중지 명령을 사용하면 된다