--- services: api: &api-environment image: jhumanj/opnform-api:latest container_name: opnform-api build: &api-build context: . dockerfile: docker/Dockerfile.api args: APP_ENV: production COMPOSER_FLAGS: --no-dev volumes: &api-environment-volumes - ./api/storage:/usr/share/nginx/html/storage:rw environment: &api-env APP_ENV: production IS_API_WORKER: "false" # Database settings DB_HOST: db REDIS_HOST: redis DB_DATABASE: ${DB_DATABASE:-forge} DB_USERNAME: ${DB_USERNAME:-forge} DB_PASSWORD: ${DB_PASSWORD:-forge} DB_CONNECTION: ${DB_CONNECTION:-pgsql} # Storage settings FILESYSTEM_DISK: local LOCAL_FILESYSTEM_VISIBILITY: public env_file: - ./api/.env depends_on: db: condition: service_healthy redis: condition: service_started api-worker: <<: *api-environment container_name: opnform-api-worker build: *api-build command: ["php", "artisan", "queue:work"] volumes: *api-environment-volumes environment: <<: *api-env APP_ENV: production IS_API_WORKER: "true" env_file: - ./api/.env api-scheduler: <<: *api-environment container_name: opnform-api-scheduler build: *api-build command: ["php", "artisan", "schedule:work"] volumes: *api-environment-volumes environment: <<: *api-env APP_ENV: production IS_API_WORKER: "true" # Scheduler settings CONTAINER_ROLE: scheduler PHP_MEMORY_LIMIT: 512M PHP_MAX_EXECUTION_TIME: 60 env_file: - ./api/.env ui: image: jhumanj/opnform-client:latest container_name: opnform-client build: context: . dockerfile: docker/Dockerfile.client env_file: - ./client/.env redis: image: redis:7 container_name: opnform-redis db: image: postgres:16 container_name: opnform-db environment: POSTGRES_DB: ${DB_DATABASE:-forge} POSTGRES_USER: ${DB_USERNAME:-forge} POSTGRES_PASSWORD: ${DB_PASSWORD:-forge} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME:-forge}"] interval: 5s timeout: 5s retries: 5 volumes: - postgres-data:/var/lib/postgresql/data ingress: image: nginx:1 container_name: opnform-ingress volumes: - ./docker/nginx.conf:/etc/nginx/templates/default.conf.template ports: - 80:80 depends_on: api: condition: service_started ui: condition: service_started volumes: postgres-data: opnform_storage: