name: dollhouse services: base: build: context: . dockerfile: docker/Dockerfile.base image: dollhouse-base:latest backend: restart: unless-stopped build: context: . dockerfile: docker/dollhouse-backend/Dockerfile depends_on: db: condition: service_healthy base: condition: service_completed_successfully environment: - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB} volumes: - dollhouse-firmwares:/app/firmware networks: - dollhouse-network frontend: build: context: . dockerfile: docker/dollhouse-frontend/Dockerfile depends_on: - base - backend ports: - "3000:3000" networks: - dollhouse-network db: image: postgres:17.2 restart: always environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} PGDATA: /var/lib/postgresql/data/pgdata POSTGRES_MULTIPLE_USERS: "yes" command: | postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all volumes: - dollhouse-postgres-data:/var/lib/postgresql/data/pgdata healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 30s timeout: 10s retries: 5 tty: true networks: - dollhouse-network cleaner: build: context: docker/dollhouse-cleaner restart: unless-stopped depends_on: - db volumes: - dollhouse-firmwares:/firmware environment: - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB} networks: - dollhouse-network networks: dollhouse-network: volumes: dollhouse-postgres-data: dollhouse-firmwares: