services: postgres: image: postgres:16-alpine environment: POSTGRES_DB: ${POSTGRES_DB:-audiowizard} POSTGRES_USER: ${POSTGRES_USER:-app} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-app} ports: - "5434:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-app} -d ${POSTGRES_DB:-audiowizard}"] interval: 5s timeout: 5s retries: 10 rabbitmq: image: rabbitmq:3.13-management-alpine environment: RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:-guest} RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD:-guest} ports: - "5672:5672" - "15672:15672" healthcheck: test: ["CMD", "rabbitmq-diagnostics", "ping"] interval: 10s timeout: 5s retries: 10 gotenberg: image: gotenberg/gotenberg:8 command: - "gotenberg" - "--api-timeout=60s" - "--chromium-disable-javascript=false" ports: - "3009:3000" php: build: context: ./docker/php working_dir: /var/www/html volumes: - ./backend:/var/www/html environment: APP_ENV: dev APP_SECRET: ${APP_SECRET:-change-me-in-prod} DATABASE_URL: "postgresql://${POSTGRES_USER:-app}:${POSTGRES_PASSWORD:-app}@postgres:5432/${POSTGRES_DB:-audiowizard}?serverVersion=16&charset=utf8" MESSENGER_TRANSPORT_DSN: "amqp://${RABBITMQ_USER:-guest}:${RABBITMQ_PASSWORD:-guest}@rabbitmq:5672/%2f/messages" GOTENBERG_URL: "http://gotenberg:3000" CORS_ALLOW_ORIGIN: "^https?://(localhost|127\\.0\\.0\\.1)(:[0-9]+)?$$" depends_on: postgres: condition: service_healthy rabbitmq: condition: service_healthy gotenberg: condition: service_started nginx: image: nginx:1.27-alpine ports: - "8079:80" volumes: - ./backend:/var/www/html:ro - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - php messenger: build: context: ./docker/php working_dir: /var/www/html volumes: - ./backend:/var/www/html environment: APP_ENV: dev APP_SECRET: ${APP_SECRET:-change-me-in-prod} DATABASE_URL: "postgresql://${POSTGRES_USER:-app}:${POSTGRES_PASSWORD:-app}@postgres:5432/${POSTGRES_DB:-audiowizard}?serverVersion=16&charset=utf8" MESSENGER_TRANSPORT_DSN: "amqp://${RABBITMQ_USER:-guest}:${RABBITMQ_PASSWORD:-guest}@rabbitmq:5672/%2f/messages" GOTENBERG_URL: "http://gotenberg:3000" command: ["php", "bin/console", "messenger:consume", "async", "-vv", "--time-limit=3600"] depends_on: postgres: condition: service_healthy rabbitmq: condition: service_healthy gotenberg: condition: service_started php: condition: service_started frontend: build: context: ./frontend working_dir: /app volumes: - ./frontend:/app ports: - "5170:5173" environment: VITE_API_URL: "http://localhost:8079" volumes: postgres_data: