-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update README section on local launch of a project in docker containers
- Loading branch information
Showing
1 changed file
with
67 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -5,7 +5,7 @@ | |
|
||
## Локальный запуск приложения в контейнерах | ||
|
||
### Клонирование репозитория, создание контейнеров и первоначальная настройка | ||
### Клонирование репозитория backend на локальный компьютер | ||
|
||
_Важно: при работе в Linux или через терминал WSL2 все команды docker и docker compose нужно выполнять от имени суперпользователя — начинайте их с sudo._ | ||
|
||
|
@@ -15,10 +15,59 @@ git clone [email protected]:healthy-food-and-dietary-products/backend.git | |
cd backend | ||
``` | ||
|
||
Создать в папках infra и backend/good_food файл .env с переменными окружения, необходимыми | ||
для работы приложения. | ||
|
||
Пример содержимого файла: | ||
### Создание файла с переменными окружения | ||
|
||
Перейти в папку infra командой cd infra и создать в ней файл .env с переменными | ||
окружения, необходимыми для работы приложения в docke-контейнерах. | ||
|
||
В переменную EMAIL_HOST_USER нужно вписать адрес электронной почты на yandex, | ||
это нужно для рассылки приложением писем пользователям об активации аккаунта, | ||
о смене пароля или адреса электронной почты, о восстановлении пароля, об оформленных заказах. | ||
На данный момент рассылка писем не подключена, но она планируется в ближайшем будущем. | ||
|
||
В переменную EMAIL_HOST_PASSWORD нужно вписать пароль приложения для рассылки писем | ||
с почтового ящика на yandex. Это не пароль от почтового ящика, его нужно специально | ||
создать в вашем [Яндекс ID](https://id.yandex.ru/), где нужно найти заголовок | ||
Безопасность -> Доступ к вашим данным -> | ||
[Пароли приложений](https://id.yandex.kz/security/app-passwords) | ||
-> Создать пароль приложения -> Почта. Нужно будет придумать имя пароля приложения, | ||
например, test, а затем скопировать полученный пароль. | ||
|
||
Переменные STRIPE_PUBLISHABLE_KEY и STRIPE_WEBHOOK_SECRET используются для онлайн-оплаты | ||
заказов через [Stripe](https://stripe.com/). | ||
Переменная STRIPE_PUBLISHABLE_KEY требуется для создания сессии с оплатой. | ||
Для ее получения нужно [зарегистрироваться на Stripe](https://dashboard.stripe.com/register), | ||
перейти на страницу для разработчиков с | ||
[ключами от апи](https://dashboard.stripe.com/test/apikeys) и скопировать | ||
значение Publishable key. | ||
Переменная STRIPE_WEBHOOK_SECRET используется для проверки успешности оплаты | ||
с помощью вебхука Stripe. | ||
При локальном запуске приложения в docker-контейнерах проверка вебхуком осуществляется | ||
с помощью Stripe CLI. Нужно [установить Stripe CLI на свой компьютер](https://stripe.com/docs/stripe-cli), | ||
затем открыть терминал и выполнить команду stripe login, в ответ вам будет предложено | ||
нажать на Enter, после чего в браузере откроется страница для подтвержения вашего | ||
согласия/несогласия на предоставление Stripe CLI информации о вашем аккаунте Stripe. | ||
Нужно нажать на кнопку Allow access, и в следующем окне появится сообщение Access granted. | ||
Затем в том же терминале нужно выполнить следующую команду, чтобы процесс | ||
проверки вебхуком запустился: stripe listen --forward-to localhost:80/webhooks/stripe/ | ||
В ответе терминала на данную команду будет нужный ключ: | ||
"Your webhook signing secret is whsec_<...>". | ||
Вам нужно будет вставить его в переменную STRIPE_WEBHOOK_SECRET. | ||
|
||
Переменные VITE_API_URL и VITE_BASE_URL нужны для создания docker-образа с фронтендом | ||
сайта. Их значения нужно оставить такими, как в примере ниже. | ||
Также нужно склонировать себе на компьютер | ||
[репозиторий frontend](https://github.com/healthy-food-and-dietary-products/frontend) | ||
командой git clone [email protected]:healthy-food-and-dietary-products/frontend.git | ||
На вашем компьютере репозитории backend и frontend должны находиться в одной и той же | ||
папке, например, так: | ||
``` | ||
Dev (какая-то общая папка) | ||
|--backend/ (репозиторий с бэкендом) | ||
|--frontend/ (репозиторий с фронтендом) | ||
``` | ||
|
||
Пример содержимого .env файла: | ||
``` | ||
SECRET_KEY=key | ||
DB_ENGINE=django.db.backends.postgresql | ||
|
@@ -33,16 +82,24 @@ MODE=prod | |
DOCKER=yes | ||
ALLOWED_HOSTS=localhost web | ||
CSRF_TRUSTED_ORIGINS=http://localhost/* | ||
STRIPE_PUBLISHABLE_KEY=pk_test_<набор цифр и букв> | ||
STRIPE_WEBHOOK_SECRET=whsec_<набор цифр и букв> | ||
VITE_API_URL=http://localhost:80/api | ||
VITE_BASE_URL=http://localhost:80 | ||
``` | ||
|
||
Перейти в папку /infra/ и запустить сборку контейнеров с помощью | ||
### Создание и запуск docker-контейнеров | ||
|
||
Перейти в папку /infra/ и запустить локальную сборку контейнеров с помощью | ||
docker compose: | ||
``` | ||
cd infra | ||
docker compose -f docker-compose.local.yml up -d --build | ||
``` | ||
После этого будут созданы и запущены в фоновом режиме контейнеры | ||
(db, web, frontend и nginx). | ||
(good_food_db, good_food_api, good_food_frontend и good_food_nginx). | ||
Контейнер good_food_frontend выполнит сборку файлов для фронтенда и остановится. | ||
Остальные контейнеры продолжат работать. | ||
|
||
Внутри контейнера web выполнить миграции и создать админа-суперпользователя для входа | ||
в Админку: | ||
|
@@ -51,7 +108,9 @@ docker-compose exec web python manage.py migrate | |
docker-compose exec web python manage.py createsuperuser | ||
``` | ||
|
||
Также требуется закинуть папку static внутрь контейнера web следующей командой: | ||
Также требуется [скачать](https://disk.yandex.kz/d/3pMfTcldvUNuJw) папку со статикой бэкенда, | ||
разорхивировать её и из директории, в которой лежит разорхивированная папка static, | ||
скопировать её внутрь контейнера good_food_api следующей командой: | ||
``` | ||
docker cp static/ good_food_api:/app | ||
``` | ||
|