fix: хелфчек глючил
This commit is contained in:
+22
-23
@@ -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:
|
||||||
Reference in New Issue
Block a user