Files
MES_Core/docker-compose.yml

55 lines
2.7 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: prodman # Имя проекта, которое будет префиксом для всех контейнеров и сетей
services:
# --- БАЗА ДАННЫХ ---
db:
image: postgres:15-alpine # Легкий образ Postgres на базе Alpine Linux
restart: unless-stopped # Перезапускать всегда, кроме случаев, когда ты сам его выключил
environment:
# Данные тянутся из твоего файла .env
- POSTGRES_DB=${DB_NAME}
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASS}
volumes:
# Храним базу в именованном томе, чтобы данные не пропали при удалении контейнера
- postgres_data:/var/lib/postgresql/data
# --- ПРИЛОЖЕНИЕ (DJANGO) ---
web:
build: . # Собирает образ из Dockerfile в текущей папке
restart: unless-stopped
environment:
- ENV_TYPE=server
env_file:
- .env # Прокидывает все секреты и настройки внутрь Python
# - ENV_TYPE=server
volumes:
# Общие папки для статики и картинок. Сюда Django их складывает.
- staticfiles:/app/staticfiles
- mediafiles:/app/media
expose:
- "8000" # Открывает порт ТОЛЬКО внутри сети Docker для Nginx
depends_on:
- db # Сначала запустится база, потом приложение
# --- ВЕБ-СЕРВЕР (ФАСАД) ---
nginx:
image: nginx:1.25-alpine
restart: unless-stopped
volumes:
# Основной конфиг маршрутизации
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
# Читаем статику и медиа, которые подготовил контейнер 'web'
# :ro (read-only) — защита: даже если Nginx взломают, файлы не удалят
- staticfiles:/app/staticfiles:ro
- mediafiles:/app/media:ro
ports:
- "80:80" # Единственная "дырка" в мир: порт 80 сервера -> порт 80 контейнера
depends_on:
- web # Nginx запустится только после Django
# Описание "жестких дисков" (Volumes), которые живут дольше контейнеров
volumes:
postgres_data: # Для данных БД
staticfiles: # Для CSS, JS и картинок интерфейса (collectstatic)
mediafiles: # Для загруженных тобой чертежей и фото