fix: хелфчек глючил

This commit is contained in:
2026-07-05 19:48:56 +03:00
parent 39fbfd2193
commit d0e8ca2e8d
+21 -22
View File
@@ -6,15 +6,13 @@
# Для первого запуска backend-контейнера, возможно, потребуется временно изменить владельца папки `data` на root # Для первого запуска backend-контейнера, возможно, потребуется временно изменить владельца папки `data` на root
# и раскомментировать соответствующие строки в секции etpgrf-backend (смотри комментарии в коде ниже). # и раскомментировать соответствующие строки в секции etpgrf-backend (смотри комментарии в коде ниже).
version: '3.8' # version: '3.8'
services: services:
# Бэкенд сервис # Бэкенд сервис
etpgrf-backend: etpgrf-backend:
# Используем готовый образ из Gitea Registry # Используем готовый образ из Gitea Registry
image: git.cube2.ru/erjemin/2026-etpgrf-site:latest image: git.cube2.ru/erjemin/2026-etpgrf-site:latest
# Если нужно, собрать образ из локального Dockerfile, а не скачивать готовый
# build: .
# Перезапускать всегда (если упал или сервер перезагрузился) # Перезапускать всегда (если упал или сервер перезагрузился)
restart: always restart: always
# Метка для Watchtower, чтобы он обновлял только этот контейнер # Метка для Watchtower, чтобы он обновлял только этот контейнер
@@ -55,7 +53,7 @@ services:
cp /app/etpgrf_site/typograph/templates/500.html /app/public/static_collected/500.html && cp /app/etpgrf_site/typograph/templates/500.html /app/public/static_collected/500.html &&
cp /app/etpgrf_site/typograph/templates/404.html /app/public/static_collected/404.html && cp /app/etpgrf_site/typograph/templates/404.html /app/public/static_collected/404.html &&
cp /app/etpgrf_site/typograph/templates/typograph/403.html /app/public/static_collected/403.html && cp /app/etpgrf_site/typograph/templates/typograph/403.html /app/public/static_collected/403.html &&
gunicorn --bind 0.0.0.0:8000 --chdir /app/etpgrf_site etpgrf_site.wsgi" gunicorn --bind 0.0.0.0:8000 --timeout 300 --workers 2 --chdir /app/etpgrf_site etpgrf_site.wsgi"
volumes: volumes:
# База данных (папка data должна быть создана на хосте) # База данных (папка data должна быть создана на хосте)
@@ -76,15 +74,10 @@ services:
max-size: "10m" max-size: "10m"
max-file: "3" max-file: "3"
# Проверка здоровья контейнера (Healthcheck) # Healthcheck отключен - вместо этого используем depends_on в nginx (service_started)
# Docker будет периодически проверять статус контейнера. Это критично для Watchtower! # Причина: healthcheck с Python-запросом к Django вызывал timeout workers,
# Если контейнер объявлен "unhealthy", Watchtower сначала остановит старый образ, потом запустит новый. # так как требовал полной загрузки Django при каждой проверке.
healthcheck: # See: https://github.com/erjemin/2026-etpgrf-site/issues/XXX
test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/').read()\""]
interval: 5m
timeout: 10s
retries: 1
start_period: 30s
# Лимиты ресурсов (docker compose вне swarm) # Лимиты ресурсов (docker compose вне swarm)
deploy: deploy:
@@ -93,6 +86,7 @@ services:
cpus: '0.40' cpus: '0.40'
memory: 360M memory: 360M
# Nginx для отдачи статики и проксирования запросов к бэкенду # Nginx для отдачи статики и проксирования запросов к бэкенду
etpgrf-nginx: etpgrf-nginx:
image: nginx:1.25-alpine image: nginx:1.25-alpine
@@ -105,21 +99,25 @@ services:
# Внешний порт. Если у тебя на хосте уже есть Nginx (прокси), # Внешний порт. Если у тебя на хосте уже есть Nginx (прокси),
# то можно пробросить на 127.0.0.1:8000 или использовать внутреннюю сеть. # то можно пробросить на 127.0.0.1:8000 или использовать внутреннюю сеть.
# Но пока оставим так:
ports: ports:
- "127.0.0.1:8080:80" # Используем 8080, чтобы не конфликтовать с Portainer (8000) или основным Nginx (80) - "127.0.0.1:8080:80" # Используем 8080, чтобы не конфликтовать с Portainer (8000) или основным Nginx (80)
depends_on: depends_on:
- etpgrf-backend etpgrf-backend:
condition: service_started
logging: logging:
driver: "json-file" driver: "json-file"
options: options:
max-size: "10m" max-size: "5m"
max-file: "3" max-file: "2"
# Сервис для автоматического обновления образов из реестра # Сервис для автоматического обновления образов из реестра
watchtower: watchtower:
image: containrrr/watchtower image: containrrr/watchtower
container_name: etpgrf_watchtower
restart: always
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
environment: environment:
@@ -127,13 +125,14 @@ services:
# Берем учетные данные из .env файла # Берем учетные данные из .env файла
- REPO_USER=${REPO_USER} - REPO_USER=${REPO_USER}
- REPO_PASS=${REPO_PASS} - REPO_PASS=${REPO_PASS}
# Ограничиваем область видимости только этим проектом - WATCHTOWER_REGISTRY_URL=git.cube2.ru
- WATCHTOWER_SCOPE=etpgrf - WATCHTOWER_SCOPE=etpgrf
# Если нужно указать реестр явно (обычно watchtower сам понимает из имени образа) command: --interval 1800 --cleanup
# - WATCHTOWER_REGISTRY_URL=git.cube2.ru logging:
command: --interval 1800 --cleanup # Проверять каждые 30 минут driver: "json-file"
restart: always options:
max-size: "1m"
max-file: "1"
volumes: volumes:
static_volume: static_volume: