version: "3.8" x-app-variables: &app-variables API_SECRET: a_very_secret_token DATABASE_URI: postgresql://postgres:postgres@postgres/whisperbox ENVIRONMENT: development BROKER_URI: redis://redis:6379/0 services: postgres: container_name: whisperbox_postgres image: postgres:15-alpine environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: whisperbox ports: - "5432:5432" networks: - app volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 5 redis: container_name: whisperbox_redis image: redis:7-alpine command: ["redis-server", "--save", "60 1"] ports: - 6379:6379 networks: - app volumes: - redis-data:/data app: container_name: whisperbox_app build: context: ../ dockerfile: docker/app.dev.Dockerfile environment: *app-variables ports: - "8000:80" networks: - app volumes: - ../:/code depends_on: postgres: condition: service_healthy redis: condition: service_started worker: build: context: ../ dockerfile: docker/worker.dev.Dockerfile container_name: whisperbox_worker volumes: - ../:/code environment: *app-variables depends_on: - app - redis networks: - app flower: container_name: whisperbox_flower image: mher/flower command: celery --broker redis://redis:6379/0 flower --port=5555 ports: - 5555:5555 depends_on: - redis networks: - app volumes: postgres-data: redis-data: networks: app: driver: bridge