less than 1 minute read

1. Docker compose를 활용하여 쉽게 컨테이너 생성하기

먼저 db_credential.env 를 만들어서 다음과 같이 작성해주자

POSTGRES_DB=5432
POSTGRES_USER=hoho
POSTGRES_PASSWORD=hoho
POSTGRES_INITDB_ARGS=--encoding=UTF-8

그리고 credential.env 를 만들어서 다음과 같이 작성해주자

WEB_HOST=127.0.0.1

DB_HOST=db
DB_PORT=5432
DB_NAME=hoho
DB_USER=hoho
DB_PASSWORD=1234

SECRET_KEY=hohohohhohhohohohhohohhoohohoho
MEDIA=http://localhost:8000/media/

db_credential.env, credential.env 작성이 끝났으면 이제 파일이름을 docker-compose.yml로 하여 생성하고 다음과 같이 작성해주자 db_credential.env, credential.env, docker-compose.yml는 같은 경로에 위치해야 한다!

version: '3'

services:
  db:
    image: postgres
    env_file: 
      - ./db_credential.env
    volumes:
      - ../db_volume:/var/lib/postgresql/data

  web:
    image: floweryroad-backend:develop
    env_file: 
      - ./credential.env
    volumes:
      - ../../:/app/floweryroad-backend
    ports:
      - "8000:8000"
    depends_on: 
      - db
    command: 
      - /bin/zsh
      - -c
      - |
        source /root/.pyenv/versions/floweryroad/bin/activate
        python /app/floweryroad-backend/manage.py migrate
        python /app/floweryroad-backend/manage.py runserver 0.0.0.0:8000

credential.env 에 정의한 내용들은 settings.py에서 다음과 같이 os.environ[’‘]을 통해서 불러쓰게 된다!

SECRET_KEY = os.environ['SECRET_KEY']

ROOT_URLCONF = 'floweryroad.urls.development'
#media 설정
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

MEDIA_URL = os.environ['MEDIA']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': os.environ['DB_NAME'],
        'USER': os.environ['DB_USER'],
        'PASSWORD': os.environ['DB_PASSWORD'],
        'HOST': os.environ['DB_HOST'],
        'PORT': os.environ['DB_PORT']
    }
}

이제 다음명령어로 개발환경을 돌려보자!!

docker-compose -f docker/dev/docker-compose.yml up

Leave a comment