87 lines
3.3 KiB
YAML
Executable File
87 lines
3.3 KiB
YAML
Executable File
services:
|
|
backend:
|
|
restart: unless-stopped
|
|
build:
|
|
context: ./backend
|
|
dockerfile: Dockerfile
|
|
environment:
|
|
SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/${POSTGRES_DB:-app_db}
|
|
POSTGRES_USER: ${POSTGRES_USER:-myuser}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD должен быть задан в .env}
|
|
JWT_SECRET: ${JWT_SECRET:?JWT_SECRET должен быть задан в .env}
|
|
JWT_ACCESS_TOKEN_TTL: ${JWT_ACCESS_TOKEN_TTL:-15m}
|
|
JWT_REFRESH_TOKEN_TTL: ${JWT_REFRESH_TOKEN_TTL:-7d}
|
|
JWT_REFRESH_COOKIE_NAME: ${JWT_REFRESH_COOKIE_NAME:-magistr_refresh}
|
|
JWT_REFRESH_COOKIE_SECURE: ${JWT_REFRESH_COOKIE_SECURE:-false}
|
|
JWT_REFRESH_CLEANUP_ENABLED: ${JWT_REFRESH_CLEANUP_ENABLED:-true}
|
|
JWT_REFRESH_CLEANUP_RETENTION: ${JWT_REFRESH_CLEANUP_RETENTION:-30d}
|
|
JWT_REFRESH_CLEANUP_BATCH_SIZE: ${JWT_REFRESH_CLEANUP_BATCH_SIZE:-500}
|
|
JWT_REFRESH_CLEANUP_MAX_BATCHES: ${JWT_REFRESH_CLEANUP_MAX_BATCHES:-20}
|
|
JWT_REFRESH_CLEANUP_INTERVAL_MS: ${JWT_REFRESH_CLEANUP_INTERVAL_MS:-3600000}
|
|
JWT_REFRESH_CLEANUP_INITIAL_DELAY_MS: ${JWT_REFRESH_CLEANUP_INITIAL_DELAY_MS:-60000}
|
|
LOGIN_RATE_MAX_FAILURES: ${LOGIN_RATE_MAX_FAILURES:-5}
|
|
LOGIN_RATE_ATTEMPT_WINDOW: ${LOGIN_RATE_ATTEMPT_WINDOW:-15m}
|
|
LOGIN_RATE_BASE_BLOCK_DURATION: ${LOGIN_RATE_BASE_BLOCK_DURATION:-1m}
|
|
LOGIN_RATE_MAX_BLOCK_DURATION: ${LOGIN_RATE_MAX_BLOCK_DURATION:-15m}
|
|
LOGIN_AUDIT_CLEANUP_ENABLED: ${LOGIN_AUDIT_CLEANUP_ENABLED:-true}
|
|
LOGIN_AUDIT_RETENTION: ${LOGIN_AUDIT_RETENTION:-90d}
|
|
LOGIN_AUDIT_CLEANUP_BATCH_SIZE: ${LOGIN_AUDIT_CLEANUP_BATCH_SIZE:-500}
|
|
LOGIN_AUDIT_CLEANUP_MAX_BATCHES: ${LOGIN_AUDIT_CLEANUP_MAX_BATCHES:-20}
|
|
LOGIN_AUDIT_CLEANUP_INTERVAL_MS: ${LOGIN_AUDIT_CLEANUP_INTERVAL_MS:-86400000}
|
|
LOGIN_AUDIT_CLEANUP_INITIAL_DELAY_MS: ${LOGIN_AUDIT_CLEANUP_INITIAL_DELAY_MS:-120000}
|
|
TRUSTED_PROXY_CIDRS: ${TRUSTED_PROXY_CIDRS:-172.16.0.0/12}
|
|
BUSINESS_TIME_ZONE: ${BUSINESS_TIME_ZONE:-Europe/Moscow}
|
|
TZ: ${TZ:-Europe/Moscow}
|
|
JAVA_TOOL_OPTIONS: -Duser.timezone=${TZ:-Europe/Moscow}
|
|
OTEL_SDK_DISABLED: ${OTEL_SDK_DISABLED:-true}
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "wget --quiet --spider http://127.0.0.1:8080/actuator/health/liveness" ]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 12
|
|
start_period: 20s
|
|
networks:
|
|
- magistr
|
|
- proxy
|
|
|
|
frontend:
|
|
restart: unless-stopped
|
|
build:
|
|
context: ./frontend
|
|
dockerfile: Dockerfile
|
|
networks:
|
|
- magistr
|
|
- proxy
|
|
depends_on:
|
|
backend:
|
|
condition: service_healthy
|
|
|
|
db:
|
|
image: postgres:16.3-alpine@sha256:36ed71227ae36305d26382657c0b96cbaf298427b3f1eaeb10d77a6dea3eec41
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER:-myuser}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD должен быть задан в .env}
|
|
POSTGRES_DB: ${POSTGRES_DB:-app_db}
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\"" ]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- magistr
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
|
|
networks:
|
|
magistr:
|
|
driver: bridge
|
|
proxy:
|
|
external: true
|
|
|
|
volumes:
|
|
postgres_data:
|