Skip to content

Commit

Permalink
Update README section on local launch of a project in docker containers
Browse files Browse the repository at this point in the history
  • Loading branch information
earlinn committed Jan 31, 2024
1 parent bcb6c85 commit a2e3f75
Showing 1 changed file with 67 additions and 8 deletions.
75 changes: 67 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

## Локальный запуск приложения в контейнерах

### Клонирование репозитория, создание контейнеров и первоначальная настройка
### Клонирование репозитория backend на локальный компьютер

_Важно: при работе в Linux или через терминал WSL2 все команды docker и docker compose нужно выполнять от имени суперпользователя — начинайте их с sudo._

Expand All @@ -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
Expand All @@ -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 выполнить миграции и создать админа-суперпользователя для входа
в Админку:
Expand All @@ -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
```
Expand Down

0 comments on commit a2e3f75

Please sign in to comment.