«Продуктовый помощник» (Проект Яндекс.Практикум) Сайт является - базой кулинарных рецептов. Пользователи могут создавать свои рецепты, читать рецепты других пользователей, подписываться на интересных авторов, добавлять лучшие рецепты в избранное, а также создавать список покупок и загружать его в txt формате. Также присутствует файл docker-compose, позволяющий, быстро развернуть контейнер базы данных (PostgreSQL), контейнер проекта django + gunicorn и контейнер nginx.
git clone https://github.com/94R1K/foodgram-project-react.git
ssh username@server_address
Где username - имя пользователя, под которым будет выполнено подключение к серверу. server_address - IP-адрес сервера или доменное имя.
Например:
ssh praktikum@178.154.247.237
mkdir app
mkdir app/foodgram-project
sudo touch app/foodgram-project/.env
sudo nano app/foodgram-project/.env
- DB_ENGINE=django.db.backends.postgresql
- DB_NAME=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- DB_HOST=postgres
- DB_PORT=5432
- DOCKER_PASSWORD - пароль от DockerHub;
- DOCKER_USERNAME - имя пользователя на DockerHub;
- HOST - ip-адрес сервера;
- SSH_KEY - приватный ssh ключ (публичный должен быть на сервере).
- TELEGRAM_TO - id своего телеграм-аккаунта (можно узнать у @userinfobot, команда /start)
- TELEGRAM_TOKEN - токен бота (получить токен можно у @BotFather, /token, имя бота)
Теперь если внести любые изменения в проект и выполнить:
git add .
git commit -m "..."
git push
Команда git push является триггером workflow проекта.
При выполнении команды git push запустится набор блоков команд jobs.
tests - тестирование проекта на соответствие PEP8 и тестам pytest.
build_and_push_to_docker_hub - при успешном прохождении тестов собирается образ (image) для docker контейнера и отправлятеся в DockerHub
deploy - после отправки образа на DockerHub начинается деплой проекта на сервере. Происходит копирование следующих файлов с репозитория на сервер:
- postgres - контейнер базы данных;
- web - контейнер Django приложения + wsgi-сервер gunicorn;
- nginx - веб-сервер.
После копирования, происходит установка docker и docker-compose на сервере и начинается сборка и запуск контейнеров.
send_message - после сборки и запуска контейнеров происходит отправка сообщения в телеграм об успешном окончании workflow.
ssh username@server_address
sudo docker container ls
В списке контейнеров копировать CONTAINER ID контейнера username/foodgram-backend:latest (username - имя пользователя на DockerHub):
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
---|---|---|---|---|---|---|
8021345d9138 | nginx:1.19.3 | "/docker-entrypoint.…" | 7 minutes ago | Exited (0) 2 minutes ago | username_nginx_1 | |
d3eb395676c6 | username/foodgram_backend:latest | "/entrypoint.sh /bin…" | 7 minutes ago | Exited (137) 2 minutes ago | username_backend_1 | |
2a0bf05071ba | postgres:12.4 | "docker-entrypoint.s…" | 8 minutes ago | Exited (137) 2 minutes ago | dfadeev-zld_db_1 | |
7caa47e8ad7e | username/foodgram_frontend:v1.0 | "docker-entrypoint.s…" | 8 minutes ago | Exited (0) 7 minutes ago | username_frontend_1 |
sudo docker exec -it d3eb395676c6 python manage.py createsuperuser
sudo docker stop $(sudo docker ps -a -q) && sudo docker rm $(sudo docker ps -a -q) && sudo docker rmi $(sudo docker images -q)
Лошкарев Ярослав Эдуардович
Python-разработчик (Backend)
Россия, г. Москва
E-mail: real-man228@yandex.ru