Проект taski-docker -- это инструмент для планирования задач («трекер»). Структура этого приложения: у него есть фронтенд (SPA-приложение на React) и бэкенд (Django-приложение).
Python, Django REST Framework, Nginx, DNS, HTTPS, Docker, PostgreSQL, GitHub Actions
Перейти в директорию с файлом docker-compose.yml, выполнить запуск и миграции:
docker compose up
docker compose exec backend python manage.py migrate
Продакш-версия проекта позволяет:
- Автоматизировать запуск и обновление приложения;
- Сделать запуск приложения воспроизводимым на любых серверах, независимо от настроек.
Для этого необходимо:
-
Собрать образы
taski_frontend,taski_backendиtaski_gatewayи залить их на Docker Hub:cd frontend docker build -t username/taski_frontend . cd ../backend docker build -t username/taski_backend . cd ../gateway docker build -t username/taski_gateway .docker push username/taski_frontend docker push username/taski_backend docker push username/taski_gateway -
Создать в корневой директории проекта файл конфигурации docker-compose.production.yml, который будет использовать собранные образы на Docker Hub и управлять запуском контейнеров на продакш-сервере. Отличие нового файла конфигурации от docker-compose.yml состоит в замене
buildнаimageс указанием ссылки на образ (postgres:13.10дляdb,username/taski_frontendдляfrontend,username/taski_backendдляbackendиusername/taski_gatewayдляgateway). -
Развернуть и запустить Docker на сервере. Поочередно выполнить на сервере следующие команды:
sudo apt update sudo apt install curl curl -fSL https://get.docker.com -o get-docker.sh sudo sh ./get-docker.sh sudo apt install docker-compose-plugin -
Загрузить на сервер новый файл конфигурации для Docker Compose и запустить контейнеры. Поместить в директорию проекта на сервере файл конфигурации docker-compose.production.yml, а также файл .env. Выполнить команду на сервере в папке проекта:
sudo docker compose -f docker-compose.production.yml up -dВыполнить миграции, собрать статические файлы бэкенда и скопировать их в
/backend_static/static/:sudo docker compose -f docker-compose.production.yml exec backend python manage.py migrate sudo docker compose -f docker-compose.production.yml exec backend python manage.py collectstatic sudo docker compose -f docker-compose.production.yml exec backend cp -r /app/static/. /backend_static/static/ -
Настроить «внешний» Nginx, что вне контейнера — для работы с приложением в контейнерах. Открыть файл default конфигурации Nginx:
nano /etc/nginx/sites-enabled/defaultИзменить настройки
locationв секцииserver(три блокаlocationзаменить на один):location / { proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:8000; }Сделать проверку и перезагрузку файла конфигурации:
sudo nginx -t sudo service nginx reload -
Для автоматизации запуска и обновления проекта на продакш-сервере создать в директории
.github/workflowsфайл main.yml с описанием workflow. Сделать коммит проекта и разместить его в удаленный репозиторий:git add . git commit -m 'Add Actions' git pushДля управления процессами CI/CD (Continuous Integration/Continuous Delivery) открыть раздел Actions в репозитории проекта в своем аккаунте GitHub.
Текст данного файла составил Адель Гарифуллин.