diff --git a/.env.sample b/.env.sample index 759f3a3..b47a926 100644 --- a/.env.sample +++ b/.env.sample @@ -152,6 +152,14 @@ ALLOW_MEDIA_SERVE=False # - AWS Systems Manager Parameter Store # - HashiCorp Vault + +# **************************************************************************************************************** +# Системные пути на хосте (ТОЛЬКО ДЛЯ ПРОДАКШЕНА) +# Используется скриптом для генерации корректного Nginx конфига (alias к медиа-файлам). +# На локальной машине разработчика (Dev) эта переменная игнорируется. +# В ПРОДАКШЕНЕ: Укажите полный путь к папке проекта на сервере +HOST_PROJECT_PATH=/home/username/projects + # **************************************************************************************************************** # Настройки доступа к пакетам в репозитории, чтобы wathtower мог проверять их свежесть и скачивать для обновления. # Получить эти данные можно в настройках вашего репозитория, например: diff --git a/PRODUCTION_DEPLOY.md b/PRODUCTION_DEPLOY.md index 5450599..748859d 100644 --- a/PRODUCTION_DEPLOY.md +++ b/PRODUCTION_DEPLOY.md @@ -41,19 +41,22 @@ cp config/nginx/oknardia-app--external-nginx.conf ~/docker-app/oknardia-site/con Отредактировать `~/docker-app/oknardia-site/.env`: ```bash -# Критично: должны быть правильные credentials для реестра Gitea -REPO_USER=erjemin -REPO_PASS=<сгенерированный токен из личного кабинета> +# ОБЯЗАТЕЛЬНО заполнить эти переменные! -# Критично: переменная с путем проекта для sed в конфиге nginx -export HOST_PROJECT_PATH=/home/default_user/projects/oknardia-site -# (если путь другой, обновить эту переменную) +# Путь к проекту на хосте (используется для sed-замены в конфиге nginx) +HOST_PROJECT_PATH=/home/default_user/projects/oknardia-site -# Остальное можно скопировать из локального .env +# Credentials для скачивания образа из реестра Gitea +REPO_USER=имя_пользователя_gitea +REPO_PASS=токен_из_личного_кабинета_gitea + +# Остальное скопировать из локального .env DEBUG=False DJANGO_SECRET_KEY=... ``` +**Важно:** `HOST_PROJECT_PATH` должен совпадать с корневой папкой проекта на хосте, куда ты скопировал docker-compose.prod.yml! + ### 3. Запустить контейнеры ```bash diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index b6d3b6d..46ea758 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -30,6 +30,7 @@ services: # 5. Пересчитываем рейтинги # 6. Создаём папку конфигов nginx (если нет) # 7. Копируем конфиг nginx с авто-заменой путей через sed + # (переменная HOST_PROJECT_PATH берется из .env и подставляется в контейнер) # 8. Инициализируем боевой конфиг (если нет, копируем из примера) # 9. Запускаем Gunicorn command: > @@ -39,12 +40,12 @@ services: python manage.py regenerate_seria_prerender && python manage.py make_rating && mkdir -p /nginx_configs_host/nginx && - sed \"s|/home/user/app/oknardia-site|$${HOST_PROJECT_PATH:-/home/default_user/projects/oknardia-site}|g\" /home/app/config/nginx/oknardia-app--external-nginx.conf > /nginx_configs_host/nginx/oknardia-app--external-nginx.conf.example && + sed \"s|/home/user/app/oknardia-site|$${HOST_PROJECT_PATH}|g\" /home/app/config/nginx/oknardia-app--external-nginx.conf > /nginx_configs_host/nginx/oknardia-app--external-nginx.conf.example && if [ ! -f /nginx_configs_host/nginx/oknardia-app--external-nginx.conf ]; then cp /nginx_configs_host/nginx/oknardia-app--external-nginx.conf.example /nginx_configs_host/nginx/oknardia-app--external-nginx.conf; echo 'INIT: Created new nginx config with correct paths'; fi && - python -m gunicorn --workers 4 --bind 0.0.0.0:8000 --timeout 120 oknardia.wsgi:application" + python -m gunicorn --workers 2 --bind 0.0.0.0:8000 --timeout 120 oknardia.wsgi:application" # Пробрасывание портов # Слушаем только на localhost хоста для безопасности @@ -66,6 +67,7 @@ services: user: "0:0" # ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ (Production) + # .env файл содержит все sensitive данные (DB, Email, API keys, REPO_USER/PASS) env_file: - .env environment: @@ -74,7 +76,6 @@ services: - DEBUG=False - DJANGO_LOG_LEVEL=INFO - ALLOW_MEDIA_SERVE=False - - HOST_PROJECT_PATH=${HOST_PROJECT_PATH:-/home/default_user/projects/oknardia-site} # ЗДОРОВЬЕ КОНТЕЙНЕРА (Healthcheck) healthcheck: @@ -95,9 +96,9 @@ services: deploy: resources: limits: - cpus: '1.0' - memory: 1G - mem_limit: 1g + cpus: '0.75' + memory: 768M + mem_limit: 768M # --- WATCHTOWER: АВТО-ОБНОВЛЕНИЕ ОБРАЗОВ --- watchtower: