docker compose upИли через Makefile:
make upЭто запустит:
- ✅ PostgreSQL 15 на порту 5432
- ✅ Применит миграции автоматически
- ✅ Запустит FastAPI приложение на порту 8000
Приложение доступно: http://localhost:8000
make help # показать все команды
make up # запустить всё
make down # остановить
make logs # логи
make build # пересобрать
make migrate # запустить миграции
make status # статус миграций
make test # тестыdocker compose updocker compose up -ddocker compose downdocker compose down -vdocker compose build
docker compose updocker compose logs
docker compose logs app
docker compose logs dbdocker compose logs -fСамый удобный режим - БД в Docker, приложение локально:
# Подними только БД
docker compose up db -d
# В другом терминале - запусти приложение локально
source .venv/bin/activate
python main.pyПреимущества:
- ✅ Быстрый перезапуск приложения
- ✅ Легко дебажить
- ✅ Hot-reload работает мгновенно
- ✅ Не нужно пересобирать Docker образ
Файлы монтируются в контейнер - изменения применяются автоматически.
docker compose upИзмени код → сохрани → сервер перезапустится автоматически.
docker compose exec app python -m pytest
docker compose exec app python -m src.infrastructure.database.migration_runner status
docker compose exec db psql -U postgres -d cleanarch_dbdocker compose exec db psql -U postgres -d cleanarch_dbSQL команды:
\dt -- список таблиц
select * from users; -- данные
select * from schema_migrations; -- применённые миграцииДанные PostgreSQL хранятся в Docker volume postgres_data.
docker compose down -vЭто удалит все данные БД. При следующем запуске всё начнётся с чистого листа.
docker compose exec db pg_dump -U postgres cleanarch_db > backup.sqlcat backup.sql | docker compose exec -T db psql -U postgres -d cleanarch_dbЕсли у вас локально запущен PostgreSQL:
Вариант 1: Остановить локальный PostgreSQL
brew services stop postgresqlВариант 2: Изменить порт в docker-compose.yml
ports:
- "5433:5432" # внешний порт 5433Измени порт в docker-compose.yml:
ports:
- "8001:8000"Приложение будет доступно на http://localhost:8001
Посмотри логи:
docker compose logs appdocker compose down -v
docker compose build --no-cache
docker compose upДля production измени:
Создай .env.production:
DATABASE_PASSWORD=strong_password_here
DEBUG=False
Запусти:
docker compose --env-file .env.production upУбери db из docker-compose и подключайся к внешней БД:
app:
environment:
DATABASE_HOST: your-db-host.com
DATABASE_PASSWORD: ${DB_PASSWORD}Создай nginx.conf и добавь сервис в docker-compose.
docker images | grep cleanarchОжидаемый размер:
cleanarch_app: ~200MBpostgres:15-alpine: ~230MB
make up # запустить
make down # остановить
make logs # логи
make migrate # миграции
make test # тестыdocker compose up -d # запустить в фоне
docker compose down # остановить
docker compose logs -f app # логи приложения
docker compose exec app bash # войти в контейнер
docker compose exec db psql -U postgres -d cleanarch_db # БД
docker compose restart app # перезапустить приложениеgit clone <repo>
cd python-clean-template
docker compose upГотово! Всё работает.
docker compose build
docker compose up# создай SQL файл
docker compose exec app python -m src.infrastructure.database.migration_runnerВсё готово к работе! 🚀