Files
1998-cad-cadpoint/docker-compose.prod.yml
2026-03-28 17:49:22 +03:00

92 lines
4.2 KiB
YAML
Raw 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.
# Файл для продакшена (использует только собранный образ, без локальных volume)
# Для разработки используй docker-compose.yml
services:
cadpoint1998:
# В продакшене используем заранее собранный образ (не build)
image: git.cube2.ru/erjemin/1998-cad-cadpoint:latest
# Имя контейнера для идентификации
container_name: cadpoint1998-site
# Политика перезагрузки: всегда перезагружаемся при сбое
restart: always
# Метки для Watchtower (авто-обновление)
labels:
- "com.centurylinklabs.watchtower.scope=cadpoint1998-scope"
# Переменные окружения
env_file:
- .env
# Volume для экспорта конфигов из контейнера на хост
# Контейнер копирует nginx конфиг при запуске для настройки reverse-proxy на хосте
volumes:
- ./config/nginx:/tmp/nginx_configs:rw # контейнер пишет сюда конфиги
# Command: скрипт для копирования конфигов из контейнера на хост при запуске
# Встроенный entrypoint nginx:alpine (/docker-entrypoint.sh) запустит это как команду
command: >
sh -c "
echo '📋 Копирование внешнего nginx конфига на хост...' &&
cp /tmp/cadpoint1998--external-nginx.conf.source /tmp/nginx_configs/cadpoint1998--external-nginx.conf.sample &&
echo '✅ Пример nginx-конфига создан в ./config/nginx/cadpoint1998--external-nginx.conf.sample (свежий из контейнера)' &&
if [ ! -f /tmp/nginx_configs/cadpoint1998--external-nginx.conf ]; then
cp /tmp/cadpoint1998--external-nginx.conf.source /tmp/nginx_configs/cadpoint1998--external-nginx.conf &&
echo '✅ Боевой nginx-конфиг создан в ./config/nginx/cadpoint1998--external-nginx.conf (свежий из контейнера)'
else
echo '⏭️ Боевой nginx-конфиг оставлен без изменений.'
fi
"
# В продакшене слушаем на внутреннем адресе (проксируется через внешний nginx)
ports:
- "127.0.0.1:8030:80"
# Логирование в JSON-файлы (для сбора логов через docker logs)
logging:
driver: "json-file"
options:
max-size: "10m" # больше лимит в продакшене для логирования
max-file: "1" # храним 1 файл лога
labels: "service=cadpoint1998"
# Сеть для взаимодействия с другими контейнерами
networks:
- cadpoint1998-network
# WATCHTOWER ДЛЯ АВТОМАТИЧЕСКОГО ОБНОВЛЕНИЯ ОБРАЗОВ ИЗ РЕЕСТРА
watchtower:
image: containrrr/watchtower
container_name: cadpoint1998-watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# Переменные окружения
env_file:
- .env
environment:
- DOCKER_API_VERSION=1.44
# Берем учетные данные из .env файла
- REPO_USER=${REPO_USER}
- REPO_PASS=${REPO_PASS}
# Ограничиваем область видимости только этим проектом
- WATCHTOWER_SCOPE=cadpoint1998-scope
# Если нужно указать реестр явно (обычно watchtower сам понимает из имени образа)
# - WATCHTOWER_REGISTRY_URL=git.cube2.ru
command: --interval 1800 --cleanup # Проверять каждые 30 минут
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
- cadpoint1998-network
# Bridge-сеть для координации сервисов
networks:
cadpoint1998-network:
driver: bridge