diff --git a/.github/workflows/pull_and_run_on_server.yaml b/.github/workflows/pull_and_run_on_server.yaml index db21276..1f0743f 100644 --- a/.github/workflows/pull_and_run_on_server.yaml +++ b/.github/workflows/pull_and_run_on_server.yaml @@ -80,15 +80,14 @@ jobs: echo DB_PASSWORD=${{ secrets.DB_PASSWORD }} >> .env cd infra/dev + + # Настройка автоматического перезапуска приложения при сбое сервера + sudo cp -f /home/goodstartuser/Goodstart_telegram_bot/infra/dev/goodstart_bot.service /etc/systemd/system/goodstart_bot.service + sudo systemctl daemon-reload + sudo systemctl restart goodstart_bot.service - # Выполняет pull образов с Docker Hub - sudo docker compose -f docker-compose.dev.yaml pull - # Перезапускает все контейнеры в Docker Compose - docker compose -f docker-compose.dev.yaml down - docker compose -f docker-compose.dev.yaml up -d + sleep 10 docker compose -f docker-compose.dev.yaml exec backend sh -c "export RUN_BOT=false" docker compose -f docker-compose.dev.yaml exec backend python manage.py collectstatic docker compose -f docker-compose.dev.yaml exec backend python manage.py migrate docker compose -f docker-compose.dev.yaml exec backend sh -c "export RUN_BOT=true" - # Выполняет удаление старых образов - docker image prune -f \ No newline at end of file diff --git a/infra/dev/goodstart_bot.service b/infra/dev/goodstart_bot.service new file mode 100644 index 0000000..5431004 --- /dev/null +++ b/infra/dev/goodstart_bot.service @@ -0,0 +1,28 @@ +[Unit] + +Description=goodstart_telegram_bot +Requires=docker.service +After=docker.service + +[Service] + +Restart=always +RestartSec=5 +TimeOutStartSec=1200 +User=goodstartuser + +WorkingDirectory=/home/goodstartuser/Goodstart_telegram_bot/infra/dev/ + +# Выполняет pull образов с Docker Hub +ExecStartPre=sudo docker compose -f docker-compose.dev.yaml pull + +# Перезапускает все контейнеры в Docker Compose +ExecStartPre=docker compose -f docker-compose.dev.yaml down +ExecStart=docker compose -f docker-compose.dev.yaml up -d + +# Выполняет удаление старых образов +ExecStartPost=docker system prune --force + +[Install] + +WantedBy=multi-user.target \ No newline at end of file