Локальное dev-окружение для проекта с FastAPI (API) и Vue 3 (Frontend) через Nginx с HTTPS.
project-root/
│
├── api/ # Backend (FastAPI)
│ ├── run.py # Запуск FastAPI
│ ├── run_seed.py # Сидинг базы
│ ├── alembic.ini # Конфигурация Alembic
│ └── app/
│ └── alembic/ # Миграции
│
├── client/ # Frontend (Vue 3)
│
├── nginx/ # Nginx конфиг и SSL сертификаты
│ ├── nginx.conf
│ └── certs/ # Dev-сертификаты (создаются Makefile)
│
├── docker/ # Dockerfile для API и Frontend
│ ├── api/Dockerfile
│ └── client/Dockerfile
│
├── certs/ # Root CA и промежуточные сертификаты
│
├── docker-compose.yaml
└── Makefile # Dev команды, миграции, seed и HTTPSДомены для локальной разработки:
- Frontend:
https://shop.local - Backend:
https://api.shop.local
Добавьте в /etc/hosts:
127.0.0.1 shop.local
127.0.0.1 api.shop.local
| Команда | Описание |
|---|---|
make dev |
Поднимает контейнеры с пересборкой (форграунд) |
make up |
Запускает контейнеры в фоне |
make down |
Останавливает контейнеры |
make restart |
Пересобирает и перезапускает контейнеры |
make logs |
Просмотр логов всех контейнеров |
make clean |
Очистка Docker-кэша и volumes |
| Команда | Описание |
|---|---|
make dev-certs |
Создаёт локальный root CA и подпись для shop.local и api.shop.local, добавляет root CA в Ubuntu |
| Команда | Описание |
|---|---|
make revision msg="описание" |
Создаёт новую миграцию с автогенерацией |
make migrate |
Применяет все миграции к базе |
make downgrade |
Откатывает последнюю миграцию |
| Команда | Описание |
|---|---|
make seed |
Запускает api/run_seed.py для заполнения базы тестовыми данными |
1️⃣ Генерация root CA и сертификатов:
make dev-certs2️⃣ Запуск dev окружения:
make devFrontend: https://shop.local Backend: https://api.shop.local
3️⃣ Миграции базы данных:
make revision msg="create users table"
make migrate4️⃣ Seed базы:
make seed5️⃣ Остановка окружения:
make down🔐 HTTPS Certificates
The project uses local Root CA + signed domain certificates.
Default dev domains:
All certificates are stored in:
nginx/certs/
nginx/ca/📜 Root CA metadata
Editable in:
nginx/rootCA.confExample:
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[ req_distinguished_name ]
C = UA
ST = Kyiv
L = Kyiv
O = Dev Company
OU = Dev Department
CN = Local Dev Root CA
emailAddress = dev@example.com
[ v3_req ]
basicConstraints = CA:TRUE
keyUsage = keyCertSign, cRLSign
🛠 Generate Dev Certificates (Root CA + domains)
Full automated setup:
make dev-certsThis will:
Create rootCA.key + rootCA.crt
Create certificates for:
-
shop.local
-
api.shop.local
Install Root CA into Ubuntu trusted certificates
Certificates available in:
nginx/certs/
nginx/ca/🎯 Create Certificate for Any Domain
make cert DOMAIN=my.localCreates:
my.local.key
my.local.crt
my.local.csr
my.local.ext
🌐 SAN Certificate
(multiple domains)
make san DOMAIN=site.local ALT="admin.site.local api.site.local"
Generates certificate for both:
-
site.local
-
admin.site.local
-
api.site.local
✳ Wildcard Certificate
make wildcard DOMAIN=shop.localResult:
-
*.shop.local
-
shop.local
Useful for multi-subdomain setups.