과정 중 Postgresql을 연동한 후 배포해주는 과정을 실습하였다.
path : /home/ubuntu/
├── backend
│ ├── Dockerfile
│ └── django # Project Directory
├── docker-compose.yml
└── nginx
└── default.conf
version: '3.8'
volumes:
postgres: {}
services:
postgres:
container_name: postgres
image: postgres:14.5
volumes:
- postgres:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=P@ssw0rd
- POSTGRES_DB=django
restart: always
backend:
container_name: backend
build: ./backend/
entrypoint: sh -c "python manage.py collectstatic --no-input && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
volumes:
- ./backend/django/:/app/
- /etc/localtime:/etc/localtime:ro
ports:
- '80:8000'
environment: # django에서 사용할 설정들을 지정해줍니다.
- DEBUG=1
- POSTGRES_DB=django
- POSTGRES_USER=user
- POSTGRES_PASSWORD=P@ssw0rd
- POSTGRES_HOST=postgres
- POSTGRES_PORT=5432
depends_on:
- postgres
restart: always
# python 3.10.8버전 이미지를 사용해 빌드
FROM python:3.10.8
# .pyc 파일을 생성하지 않도록 설정합니다.
ENV PYTHONDONTWRITEBYTECODE 1
# 파이썬 로그가 버퍼링 없이 즉각적으로 출력하도록 설정합니다.
ENV PYTHONUNBUFFERED 1
# /app/ 디렉토리를 생성합니다.
RUN mkdir /app/
# /app/ 경로를 작업 디렉토리로 설정합니다.
WORKDIR /app/
# requirments.txt를 작업 디렉토리(/app/) 경로로 복사합니다.
COPY ./django/requirements.txt .
# 프로젝트 실행에 필요한 패키지들을 설치합니다.
RUN pip install --no-cache-dir -r requirements.txt
# gunicorn과 postgresql을 사용하기 위한 패키지를 설치합니다.
RUN pip install psycopg2