# Файл для продакшена (использует только собранный образ, без локальных 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