80 lines
2.5 KiB
YAML
80 lines
2.5 KiB
YAML
# =====================================================================
|
|
# ЛОКАЛЬНАЯ РАЗРАБОТКА (fully-dockerized, hot-reload)
|
|
# make dev — поднять весь стек (db + redis + app с авто-перекомпиляцией)
|
|
# Приложение: http://localhost:8080 (health: /health, ready: /health/ready)
|
|
# Прод-стек живёт отдельно в docker-compose.prod.yml.
|
|
# =====================================================================
|
|
services:
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.dev
|
|
container_name: netrunner-app-dev
|
|
env_file:
|
|
- .env.dev
|
|
ports:
|
|
- "8080:8080"
|
|
volumes:
|
|
# Исходники монтируем внутрь — cargo-watch ловит изменения и перезапускает.
|
|
- ./src:/app/src
|
|
- ./migrations:/app/migrations
|
|
- ./templates:/app/templates
|
|
- ./Cargo.toml:/app/Cargo.toml
|
|
- ./Cargo.lock:/app/Cargo.lock
|
|
- ./frontend/dist:/app/frontend/dist
|
|
- ./keys:/app/keys:ro
|
|
# Кеши, чтобы не перекомпилировать весь мир при каждом старте.
|
|
- cargo_registry:/usr/local/cargo/registry
|
|
- target_cache:/app/target
|
|
# Сначала прогоняем миграции, затем запускаем watch-перекомпиляцию.
|
|
command: sh -c "cargo run -- --migrate && cargo watch -x run"
|
|
restart: on-failure
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
networks:
|
|
- netrunner_dev_grid
|
|
|
|
db:
|
|
image: postgres:16-alpine
|
|
container_name: netrunner-db-dev
|
|
environment:
|
|
POSTGRES_USER: ${DB_USER:-netrunner_admin}
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD:-dev_root_123}
|
|
POSTGRES_DB: ${DB_NAME:-netrunner}
|
|
ports:
|
|
- "5432:5432"
|
|
volumes:
|
|
- netrunner_dev_db:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-netrunner_admin} -d ${DB_NAME:-netrunner}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
networks:
|
|
- netrunner_dev_grid
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: netrunner-redis-dev
|
|
ports:
|
|
- "6379:6379"
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "ping"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 10
|
|
networks:
|
|
- netrunner_dev_grid
|
|
|
|
networks:
|
|
netrunner_dev_grid:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
netrunner_dev_db:
|
|
cargo_registry:
|
|
target_cache:
|