minor: Финализация production конфигурации
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 3m44s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 3m44s
This commit is contained in:
@@ -152,6 +152,14 @@ ALLOW_MEDIA_SERVE=False
|
|||||||
# - AWS Systems Manager Parameter Store
|
# - AWS Systems Manager Parameter Store
|
||||||
# - HashiCorp Vault
|
# - HashiCorp Vault
|
||||||
|
|
||||||
|
|
||||||
|
# ****************************************************************************************************************
|
||||||
|
# Системные пути на хосте (ТОЛЬКО ДЛЯ ПРОДАКШЕНА)
|
||||||
|
# Используется скриптом для генерации корректного Nginx конфига (alias к медиа-файлам).
|
||||||
|
# На локальной машине разработчика (Dev) эта переменная игнорируется.
|
||||||
|
# В ПРОДАКШЕНЕ: Укажите полный путь к папке проекта на сервере
|
||||||
|
HOST_PROJECT_PATH=/home/username/projects
|
||||||
|
|
||||||
# ****************************************************************************************************************
|
# ****************************************************************************************************************
|
||||||
# Настройки доступа к пакетам в репозитории, чтобы wathtower мог проверять их свежесть и скачивать для обновления.
|
# Настройки доступа к пакетам в репозитории, чтобы wathtower мог проверять их свежесть и скачивать для обновления.
|
||||||
# Получить эти данные можно в настройках вашего репозитория, например:
|
# Получить эти данные можно в настройках вашего репозитория, например:
|
||||||
|
|||||||
@@ -41,19 +41,22 @@ cp config/nginx/oknardia-app--external-nginx.conf ~/docker-app/oknardia-site/con
|
|||||||
Отредактировать `~/docker-app/oknardia-site/.env`:
|
Отредактировать `~/docker-app/oknardia-site/.env`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Критично: должны быть правильные credentials для реестра Gitea
|
# ОБЯЗАТЕЛЬНО заполнить эти переменные!
|
||||||
REPO_USER=erjemin
|
|
||||||
REPO_PASS=<сгенерированный токен из личного кабинета>
|
|
||||||
|
|
||||||
# Критично: переменная с путем проекта для sed в конфиге nginx
|
# Путь к проекту на хосте (используется для sed-замены в конфиге nginx)
|
||||||
export HOST_PROJECT_PATH=/home/default_user/projects/oknardia-site
|
HOST_PROJECT_PATH=/home/default_user/projects/oknardia-site
|
||||||
# (если путь другой, обновить эту переменную)
|
|
||||||
|
|
||||||
# Остальное можно скопировать из локального .env
|
# Credentials для скачивания образа из реестра Gitea
|
||||||
|
REPO_USER=имя_пользователя_gitea
|
||||||
|
REPO_PASS=токен_из_личного_кабинета_gitea
|
||||||
|
|
||||||
|
# Остальное скопировать из локального .env
|
||||||
DEBUG=False
|
DEBUG=False
|
||||||
DJANGO_SECRET_KEY=...
|
DJANGO_SECRET_KEY=...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Важно:** `HOST_PROJECT_PATH` должен совпадать с корневой папкой проекта на хосте, куда ты скопировал docker-compose.prod.yml!
|
||||||
|
|
||||||
### 3. Запустить контейнеры
|
### 3. Запустить контейнеры
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ services:
|
|||||||
# 5. Пересчитываем рейтинги
|
# 5. Пересчитываем рейтинги
|
||||||
# 6. Создаём папку конфигов nginx (если нет)
|
# 6. Создаём папку конфигов nginx (если нет)
|
||||||
# 7. Копируем конфиг nginx с авто-заменой путей через sed
|
# 7. Копируем конфиг nginx с авто-заменой путей через sed
|
||||||
|
# (переменная HOST_PROJECT_PATH берется из .env и подставляется в контейнер)
|
||||||
# 8. Инициализируем боевой конфиг (если нет, копируем из примера)
|
# 8. Инициализируем боевой конфиг (если нет, копируем из примера)
|
||||||
# 9. Запускаем Gunicorn
|
# 9. Запускаем Gunicorn
|
||||||
command: >
|
command: >
|
||||||
@@ -39,12 +40,12 @@ services:
|
|||||||
python manage.py regenerate_seria_prerender &&
|
python manage.py regenerate_seria_prerender &&
|
||||||
python manage.py make_rating &&
|
python manage.py make_rating &&
|
||||||
mkdir -p /nginx_configs_host/nginx &&
|
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
|
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;
|
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';
|
echo 'INIT: Created new nginx config with correct paths';
|
||||||
fi &&
|
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 хоста для безопасности
|
# Слушаем только на localhost хоста для безопасности
|
||||||
@@ -66,6 +67,7 @@ services:
|
|||||||
user: "0:0"
|
user: "0:0"
|
||||||
|
|
||||||
# ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ (Production)
|
# ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ (Production)
|
||||||
|
# .env файл содержит все sensitive данные (DB, Email, API keys, REPO_USER/PASS)
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
environment:
|
environment:
|
||||||
@@ -74,7 +76,6 @@ services:
|
|||||||
- DEBUG=False
|
- DEBUG=False
|
||||||
- DJANGO_LOG_LEVEL=INFO
|
- DJANGO_LOG_LEVEL=INFO
|
||||||
- ALLOW_MEDIA_SERVE=False
|
- ALLOW_MEDIA_SERVE=False
|
||||||
- HOST_PROJECT_PATH=${HOST_PROJECT_PATH:-/home/default_user/projects/oknardia-site}
|
|
||||||
|
|
||||||
# ЗДОРОВЬЕ КОНТЕЙНЕРА (Healthcheck)
|
# ЗДОРОВЬЕ КОНТЕЙНЕРА (Healthcheck)
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -95,9 +96,9 @@ services:
|
|||||||
deploy:
|
deploy:
|
||||||
resources:
|
resources:
|
||||||
limits:
|
limits:
|
||||||
cpus: '1.0'
|
cpus: '0.75'
|
||||||
memory: 1G
|
memory: 768M
|
||||||
mem_limit: 1g
|
mem_limit: 768M
|
||||||
|
|
||||||
# --- WATCHTOWER: АВТО-ОБНОВЛЕНИЕ ОБРАЗОВ ---
|
# --- WATCHTOWER: АВТО-ОБНОВЛЕНИЕ ОБРАЗОВ ---
|
||||||
watchtower:
|
watchtower:
|
||||||
|
|||||||
Reference in New Issue
Block a user