Skip to content

Commit

Permalink
Merge pull request #52 from b2b-marketplace/feature/docker-dev
Browse files Browse the repository at this point in the history
Add Docker setup for development environment
  • Loading branch information
Voyager1744 authored Aug 14, 2023
2 parents 1592ed7 + f883bf4 commit 890d6cc
Show file tree
Hide file tree
Showing 5 changed files with 115 additions and 17 deletions.
85 changes: 68 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,68 @@
# backend

## Схема базы данных
Обновление картинки после изменения dbml с помощью команды:
```
npx --package=@softwaretechnik/dbml-renderer -- dbml-renderer -i docs/db.dbml -o docs/db.svg
```

Схему БД в интерактивном режиме можно посмотреть по ссылке:

[СХЕМА БД](https://dbdiagram.io/d/64bb081202bd1c4a5e7f8c0b)


## Документация API
В проекте реализована автоматическая генерация документации. Документация доступна по адресам:
1) Swagger: `/api/v1/schema/swagger-ui/`
2) Redoc: `/api/v1/schema/redoc/`
# backend

## Схема базы данных
Обновление картинки после изменения dbml с помощью команды:
```
npx --package=@softwaretechnik/dbml-renderer -- dbml-renderer -i docs/db.dbml -o docs/db.svg
```

Схему БД в интерактивном режиме можно посмотреть по ссылке:

[СХЕМА БД](https://dbdiagram.io/d/64bb081202bd1c4a5e7f8c0b)



## Документация API
В проекте реализована автоматическая генерация документации. Документация доступна по адресам:
1) Swagger: `/api/v1/schema/swagger-ui/`
2) Redoc: `/api/v1/schema/redoc/`



## Запуск в режиме разработки

1. Убедитесь, что у вас установлены Docker и Docker Compose.

2. Склонируйте данный репозиторий на свой локальный компьютер:

```bash
git clone https://github.com/b2b-marketplace/b2b-marketplace-backend.git
```

3. Перейдите в директорию с проектом:

```bash
cd b2b-marketplace-backend
```

4. Создайте файл .env внутри директории infra с переменными окружения
и скопируйте в него данные из файла ".env.example":

```bash
touch infra/.env
```

5. Соберите Docker-образы и запустите контейнеры:

```bash
docker-compose -f infra/docker-compose.dev.yml build
```

```bash
docker-compose -f infra/docker-compose.dev.yml up -d
```
6. После успешного запуска, Django приложение будет
доступно по адресу http://localhost:8000/.

7. Теперь вы можете войти в административную панель Django
по адресу http://localhost:8000/admin/,
используя созданные учетные данные:
```
username: admin
пароль: mysecretpassword
```
8. Вы можете остановить контейнеры с помощью команды:

```bash
docker-compose -f infra/docker-compose.dev.yml down
```
1 change: 1 addition & 0 deletions infra/.env.example
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# пример файла с переменными окружения (.env)

# django
DJANGO_SUPERUSER_PASSWORD=mysecretpassword
DJANGO_SECRET_KEY=testsecretkey
DJANGO_ALLOWED_HOSTS=127.0.0.1,localhost
CSRF_TRUSTED_ORIGINS=http://127.0.0.1,http://localhost
Expand Down
11 changes: 11 additions & 0 deletions infra/Dockerfile.dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
FROM python:3.9-slim

RUN pip install poetry

WORKDIR /app

COPY ../pyproject.toml ../poetry.lock /app/

RUN poetry config virtualenvs.create false && poetry install --no-interaction --no-ansi

COPY . /app/
20 changes: 20 additions & 0 deletions infra/docker-compose-postgres.dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
version: "3.8"
volumes:
pg_data:

services:
db:
image: postgres:15.3
container_name: b2b-marketplace-db-local
restart: on-failure
volumes:
- pg_data:/var/lib/postgresql/data
env_file:
- .env
ports:
- "${POSTGRES_PORT}:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER"]
interval: 5s
timeout: 5s
retries: 5
15 changes: 15 additions & 0 deletions infra/docker-compose.dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,18 @@ services:
interval: 5s
timeout: 5s
retries: 5
backend:
build:
context: ../
dockerfile: infra/Dockerfile.dev
container_name: b2b-marketplace-backend
command: >
sh -c "poetry run python manage.py migrate &&
poetry run python manage.py createsuperuser --no-input --username admin --email [email protected] &&
poetry run python manage.py runserver 0.0.0.0:8000"
ports:
- "8000:8000"
env_file:
- .env
depends_on:
- db

0 comments on commit 890d6cc

Please sign in to comment.