1. docker compose 설치

~$ curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
~$ chmod +x /usr/local/bin/docker-compose
~$ docker-compose --version

chmod로 docker-compose의 실행권을 주어야 version 확인 가능

현재 사용 버전 : 1.25.0

2. django sample 가져오기

~$ git clone https://github.com/raccoonyy/django-sample-for-docker-compose.git
~$ mv  django-sample-for-docker-compose {project name}
~$ cd {project name}

샘플을 다운 받아 이름을 원하는 프로젝트 이름으로 바꾼다.

3. docker-compose 파일 수정

~$ vim docker-compose.yml
  • vim이 없다면
~$ sudo apt-get vim

아래와 같이 수정한다.

version: '3'

services:
  db:
    image: postgres
    volumes:
      - ./docker/data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=sampledb
      - POSTGRES_USER=sampleuser
      - POSTGRES_PASSWORD=samplesecret
      - POSTGRES_INITDB_ARGS=--encoding=UTF-8

  django:
    build:
      context: .
      dockerfile: ./compose/django/Dockerfile-dev
    environment:
      - DJANGO_DEBUG=True
      - DJANGO_DB_HOST=db
      - DJANGO_DB_PORT=5432
      - DJANGO_DB_NAME=sampledb
      - DJANGO_DB_USERNAME=sampleuser
      - DJANGO_DB_PASSWORD=samplesecret
      - DJANGO_SECRET_KEY=dev_secret_key
    ports:
      - "8000:8000"
    command: 
      - python manage.py runserver 0:8000
    volumes:
      - ./:/app/

Django에 database가 연결되어 있음을 알 수 있다. django아래에 environment를 수정해 다양한 설정 할 수 있다.

4. Docker 파일 수정

~$ vim compose/django/Dockerfile-dev
FROM python:3

ENV PYTHONUNBUFFERED 0

RUN apt-get update && apt-get -y install \
    libpq-dev

WORKDIR /app

ADD    requirements.txt    /app/
RUN    pip install -r requirements.txt

ADD    https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /

# ADD    ./djangosample   /app/djangosample/
# ADD    ./manage.py      /app/

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

CMD의 주석을 제거하여 컨테이너 실행 시 서버가 실행되도록 한다. (이유는 모르겠지만 재부팅 후 docker-compose up 으로 실행 안되는데 이렇게 하니까 됐다.)

5. 실행하기

~$ docker-compose up -d --build

http://127.0.0.1:8000에 들어가 확인해본다.

  • 현재실행중인 docker-compose 확인하기
~$ docker-compose ps