코딩공부/Server
docker-compose.yml 작성을 위한 구성 옵션 정리
Dong_Devlog
2022. 11. 21. 18:28
docker-compose.yml 작성을 위한 구성 옵션 정리
docker-compose.yml
version: '3.8'
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 && gunicorn drf_project.wsgi --workers=5 -b 0.0.0.0:8000"
volumes:
- ./backend/django/:/app/
- /etc/localtime:/etc/localtime:ro
- django_media:/app/media/
- django_static:/app/static/
environment:
- DEBUG=1
- POSTGRES_DB=django
- POSTGRES_USER=user
- POSTGRES_PASSWORD=P@ssw0rd
- POSTGRES_HOST=postgres
- POSTGRES_PORT=5432
depends_on:
- postgres
restart: always
nginx:
container_name : nginx
image: nginx:1.23.2
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- django_media:/media/
- django_static:/static/
depends_on:
- backend
restart: always
디렉토리 구조
path : /home/ubuntu/
├── backend
│ ├── Dockerfile
│ └── django # project directory
├── docker-compose.yml
└── nginx
└── default.conf
구성 옵션 정리
- version : docker-compose 문서에 대한 버전을 지정한다. 버전에 따라 기능과 옵션이 다를 수 있다.
- services : 컨테이너를 실행하기 위해 정의 한다. 컨테이너는 곧 서비스라는 개념으로 접근
- build : Dockerfile 빌드를 위한 Dockerfile이 있는 경로를 지정
- container_name : 컨테이너의 이름을 지정한다.
- image : 컨테이너에 사용 될 이미지명, 태그가 없으면 latest가 자동으로 붙는다.
- volumes : 호스트의 dir와 컨테이너의 dir를 연결(mount) 해준다.
- environment : 컨테이너 내부의 환경 변수를 설정한다.
- restart : restart 옵션(no:수동으로 재시작, always:컨테이너를 끄기전까지 항상 재시작, on-failure:오류가 있을 시에 재시작)
- depends_on : 컨테이너의 실행 순서 설정
- ports : 호스트와 컨테이너 포트를 설정, 각 서비스의 포트를 정의한다.