Для этого понадобится:
- Установленный Docker на ваш компьютер. (если вы на Windows то ещё и WSL)
- Немного измененный .env, пример которого можно посмотреть ниже.
- Секреты добавленные в форкнутый проект. (нужно для деплоя на удаленном сервере, такие пункты будут помечены фразой
опционально
)
В корневой папке проекта.
DEBUG=
SECRET_KEY=
ALLOWED_HOSTS=
DB_ENGINE=
DB_NAME=
POSTGRES_USER=
POSTGRES_PASSWORD=
DB_HOST=
DB_PORT=
Для запуска присутствует 2 варианта:
-
Первый и самый простой, это запуск на локальной машине.
Т.е. для этого вам просто нужно сделать всё выше перечисленное + выполнить команду
docker-compose -f docker-compose.yml up --build
-
Уже сложнее. Для этого вам потребуется (предоставлю небольшой чеклист)
1. Аккаунт на Dockerhub. 2. Добавленные секреты в проект. #обсудим дальше 3. Собственно удалённый сервер для запуска. 4. Пара махинаций с командной строкой.
Предполагаю, что 1 пункт выполнен.
Форкнутый проект -> Settings -> Secrets and Variables -> Actions
По этому пути добавляете:
DOCKER_PASSWORD = <пароль от вашего докер аккаунта>
DOCKER_USERNAME = <username от вашего докер аккаунта>
#опционально
HOST = <айпи сервера где вы хотите запустить проект>
SSH_KEY = <SSH ключ для сервера>
SSH_PASSPHRASE = <пароль для сервера>
TELEGRAM_TO = <ваш айди телеграм>
TELEGRAM_TOKEN = <токен телеграм бота>
USER = <имя пользователя на удаленном сервере>
Для запуска проекта нужны будут 3 файла, это nginx.conf (я предполагаю, что nginx default
уже настроен и протокол защищен), .env
и docker-compose.yml
Все они расположены в корне проекта. Копируются с помощью команды scp
, можно также просто создать эти файлы вручную на сервре и перенести содержимое из указанных файлов, расположенных в корней проекта.
Копируем
- Файл
.env
.scp -i <путь_к_ключу_ssh_для_вашего_сервера> <путь_к_файлу_.env>/.env <имя_пользователя_на сервре>@<ip_сервреа>:<путь к папке>/foodgram/.env
- Файл
nginx.conf
scp -i <путь к ключу ssh для вашего сервре> <путь_к_файлу_nginx.conf>/nginx.conf <имя_пользователя_на сервре>@<ip_сервреа>:<путь к папке>/foodgram/nginx.conf
- Файл
docker-compose.yml
копируется автоматически
Если ВСЁ вышеперечисленное было выполнено правильно, то тогда, после пушка проекта без значительных изменений на GitHub, запустится workflow
, который автоматически соберёт образы на ваш DockerHub аккаунт, запуллит их на удалённый сервер и запустит их.
Для создания админки вам нужно выполнить такие 2 команды на удалённом сервере:
sudo docker compose -f docker-compose.yml exec backend python manage.py createsuperuser
После этого вас попросят ввести Username
, Email
, Password
и вот ваша админка готова.
Используемые технологии:
Java Script, Python 3.9, Django REST, Django.