[DOCKER]Docker Compose로 Django 환경세팅

박민하·2022년 7월 21일
0

Deploy

목록 보기
10/15

  Docker Compose를 사용하여 간단한 Django/PostgreSQL 앱을 설정해보자. docker document에 방법이 아주 잘 나와있다.

✅ Docker Compose

1. 디렉터리 생성

  docker-compose라는 폴더를 만들었다.

2. Dockerfile 생성

  디렉터리에 Dockerfile 파일을 생성한 후 아래 내용 복붙 저장.

# syntax=docker/dockerfile:1
FROM python:3
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

3. requirements.txt 생성

  디렉터리에 requirements.txt 파일을 생성한 후 아래 내용 복붙 저장. 이 파일은 Dockerfile 안의 RUN pip install -r requirements.txt 부분에서 사용될 파일이다. django랑 psycopg를 설치한다.

Django>=3.0,<4.0
psycopg2>=2.8

4. docker-compose.yml 생성

  디렉터리에 docker-compose.yml 파일을 생성한 후 아래 내용 복붙 저장.

version: "3.9"
   
services:
  db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    environment:
      - POSTGRES_NAME=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    depends_on:
      - db

✅ Django 환경세팅

1. Django 프로젝트 생성

  아래 커멘드를 실행하면 composeexample라는 이름의 프로젝트 폴더가 생성된다.

$ sudo docker-compose run web django-admin startproject composeexample .

2. 소유권 변경

  ls -l 커멘드로 프로젝트의 내용을 확인할 수 있다. 여기서 파일의 소유권자를 확인할 수 있는데, manage.py의 소유권이 root에 있음을 알 수 있다. 이 파일의 소유권을 변경하자.

$ sudo chown -R $USER:$USER composeexample manage.py

✅ 데이터베이스 연결

1. settings.py 편집

  프로젝트폴더 composeexample 안에 settings.py 파일이 있다. os 모듈을 import하고 DATABASES 내용을 변경하자.

# settings.py
   
import os
   
[...]
   
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('POSTGRES_NAME'),
        'USER': os.environ.get('POSTGRES_USER'),
        'PASSWORD': os.environ.get('POSTGRES_PASSWORD'),
        'HOST': 'db',
        'PORT': 5432,
    }
}

✅ 실행/종료

1. docker-compose up

  docker-compose up 커멘드를 실행하면 지금까지 열심히 작성한 컨테이너가 실행된다.

2. docker-compose down

  컨테이너 종료.

profile
backend developer 🐌

0개의 댓글