Production deploy Around вынесен в отдельный infra repository:
git@github.com:Arch1E2/infra_around.git
Wiki.js не входит в этот deploy flow и разворачивается отдельно.
На сервере должны быть:
80 и 443.q7m4t2x9b1.auna.kz./etc/letsencrypt/live/q7m4t2x9b1.auna.kz/.Создать deploy user:
sudo useradd -m -s /bin/bash around-deploy
sudo usermod -aG docker around-deploy
sudo install -d -m 700 -o around-deploy -g around-deploy /home/around-deploy/.ssh
Для GitHub Actions -> server:
SSH_PRIVATE_KEY репозитория infra_around;/home/around-deploy/.ssh/authorized_keys.Для server -> GitHub:
/home/around-deploy/.ssh/infra_around;infra_around как read-only Deploy Key.Проверка:
sudo -u around-deploy ssh -T git@github.com
sudo -u around-deploy git clone git@github.com:Arch1E2/infra_around.git /home/around-deploy/around-infra
В GitHub Actions secrets репозитория infra_around:
SSH_HOST=<server>
SSH_USER=around-deploy
SSH_PORT=22
SSH_PRIVATE_KEY=<private key for GitHub Actions -> server>
APP_DIR=/home/around-deploy/around-infra
GHCR_USERNAME=<github username>
GHCR_TOKEN=<token with write:packages/read:packages>
SOURCE_REPO_TOKEN=<token with read access to source repos>
Файл:
/home/around-deploy/around-infra/deploy/.env
Обязательные группы переменных:
DJANGO_SECRET_KEYDEBUG=0ALLOWED_HOSTSCSRF_TRUSTED_ORIGINSPOSTGRES_DBPOSTGRES_USERPOSTGRES_PASSWORDPOSTGRES_HOST=around_dbPOSTGRES_PORT=5432REDIS_PASSWORDREDIS_URL=redis://:<password>@around_redis:6379/0WS_ALLOWED_ORIGINSAWS_*, если media/chat uploads используют S3-compatible storageNUXT_PUBLIC_API_BASE_URLNUXT_PUBLIC_CHAT_API_BASE_URLNUXT_PUBLIC_YANDEX_MAPS_API_KEYNUXT_PUBLIC_YANDEX_GEOCODER_API_KEYПрава:
sudo chown around-deploy:around-deploy /home/around-deploy/around-infra/deploy/.env
sudo chmod 600 /home/around-deploy/around-infra/deploy/.env
В репозитории infra_around вручную запустить workflow:
Actions -> build-images -> Run workflow
Refs:
backend_ref=master
chat_ref=master
frontend_ref=master
Workflow публикует:
ghcr.io/arch1e2/django_aroundghcr.io/arch1e2/around_chatghcr.io/arch1e2/around_frontПеред первым deploy остановить старые контейнеры без удаления volumes:
docker compose -f docker-compose.prod.yml down
Не выполнять down -v, если нужно сохранить базу.
В infra_around запустить:
Actions -> deploy -> Run workflow
Параметры:
backend_image_tag=latest
chat_image_tag=latest
frontend_image_tag=latest
run_migrations=true
Если миграции уже применены, для следующих deploy можно использовать run_migrations=false.
На сервере:
sudo -u around-deploy bash -lc 'cd /home/around-deploy/around-infra/deploy && docker compose -f docker-compose.prod.yml ps'
sudo -u around-deploy bash -lc 'cd /home/around-deploy/around-infra/deploy && docker compose -f docker-compose.prod.yml logs --tail=100 around_back around_chat around_front nginx'
HTTP checks:
curl -I https://q7m4t2x9b1.auna.kz
curl -I https://q7m4t2x9b1.auna.kz/api/v1/
Migrations:
sudo -u around-deploy bash -lc 'cd /home/around-deploy/around-infra/deploy && docker compose -f docker-compose.prod.yml exec -T around_back python manage.py showmigrations | grep "\[ \]" | head'
No output means all migrations are applied.