volumes: redisdata: {} pgdata: {} services: traefik: image: traefik:latest container_name: traefik healthcheck: test: ["CMD", "traefik", "healthcheck", "--ping"] interval: 10s timeout: 5s retries: 5 ports: - "80:80" - "443:443" volumes: - "/var/run/docker.sock:/var/run/docker.sock" restart: always command: - "--providers.docker=true" - "--ping" - "--providers.docker.exposedByDefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.web-secure.address=:443" - "--accesslog=true" - "--entrypoints.web.http.redirections.entryPoint.to=web-secure" - "--entrypoints.web.http.redirections.entryPoint.scheme=https" - "--entrypoints.web.http.redirections.entrypoint.permanent=true" composer-runtime: volumes: - .:/app image: siteworxpro/composer entrypoint: "/bin/sh -c 'while true; do sleep 30; done;'" environment: PHP_IDE_CONFIG: serverName=localhost migration-container: volumes: - ./db/migrations:/app/db/migrations - ./bin:/app/bin image: siteworxpro/migrate:v4.18.3 working_dir: /app # entrypoint: "/bin/sh -c 'while true; do sleep 30; done;'" entrypoint: /bin/sh -c '/app/bin/migrate.sh' depends_on: postgres: condition: service_healthy environment: DB_USERNAME: ${DB_USERNAME:-siteworxpro} DB_PASSWORD: ${DB_PASSWORD:-password} DB_DATABASE: ${DB_DATABASE:-siteworxpro} DB_HOST: ${DB_HOST-postgres} DB_PORT: ${DB_PORT-5432} dev-runtime: labels: - "traefik.enable=true" - "traefik.http.routers.api.entrypoints=web-secure" - "traefik.http.routers.api.rule=Host(`localhost`) || Host(`127.0.0.1`)" - "traefik.http.routers.api.tls=true" - "traefik.http.routers.api.service=api" - "traefik.http.services.api.loadbalancer.healthcheck.path=/healthz" - "traefik.http.services.api.loadbalancer.healthcheck.interval=5s" - "traefik.http.services.api.loadbalancer.healthcheck.timeout=60s" volumes: - .:/app build: args: KAFKA_ENABLED: "1" context: . dockerfile: Dockerfile entrypoint: "/bin/sh -c 'while true; do sleep 30; done;'" depends_on: migration-container: condition: service_completed_successfully traefik: condition: service_healthy redis: condition: service_healthy postgres: condition: service_healthy environment: JWT_ISSUER: https://auth.siteworxpro.com/application/o/postman/ JWT_AUDIENCE: 1RWyqJFlyA4hmsDzq6kSxs0LXvk7UgEAfgmBCpQ9 JWT_SIGNING_KEY: https://auth.siteworxpro.com/application/o/postman/.well-known/openid-configuration QUEUE_BROKER: redis PHP_IDE_CONFIG: serverName=localhost WORKERS: 1 DEBUG: 1 REDIS_HOST: redis DB_HOST: postgres ## Kafka and Zookeeper for local development kafka-ui: image: kafbat/kafka-ui:latest # Or kafbat/kafka-ui:latest for newer Kafka container_name: kafka-ui ports: - "8080:8080" # Expose the UI port environment: KAFKA_CLUSTERS_0_NAME: local-kafka-cluster KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9092 depends_on: kafka: condition: service_started zookeeper: condition: service_started zookeeper: image: ubuntu/zookeeper:latest environment: ALLOW_ANONYMOUS_LOGIN: "yes" ports: - "2181:2181" kafka: image: ubuntu/kafka:latest environment: KAFKA_BROKER_ID: 1 KAFKA_LISTENERS: PLAINTEXT://kafka:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 ALLOW_PLAINTEXT_LISTENER: "yes" ports: - "9092:9092" depends_on: zookeeper: condition: service_started redis: image: redis:latest healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 ports: - "6379:6379" volumes: - redisdata:/data postgres: image: postgres:18 healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME:-siteworxpro}"] interval: 10s timeout: 5s retries: 5 environment: POSTGRES_USER: ${DB_USERNAME:-siteworxpro} POSTGRES_PASSWORD: ${DB_PASSWORD:-password} POSTGRES_DB: ${DB_DATABASE:-siteworxpro} ports: - "5432:5432" volumes: - pgdata:/var/lib/postgresql