name: tg-sales-archive x-backend-common: &backend-common image: ${BACKEND_IMAGE:-tg-sales-backend:phase10} env_file: - .env volumes: - ./.env:/var/www/html/.env:ro - tg_sales_backend_storage:/var/www/html/storage restart: unless-stopped x-worker-environment: &worker-environment BACKEND_INTERNAL_BASE_URL: http://backend:8000/internal SESSION_DIR: /var/lib/tg-sessions x-worker-common: &worker-common image: ${WORKER_IMAGE:-tg-sales-worker:phase10} depends_on: backend: condition: service_started minio: condition: service_started env_file: - .env volumes: - tg_sales_tg_sessions:/var/lib/tg-sessions stdin_open: true tty: true restart: unless-stopped services: mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci volumes: - tg_sales_mysql_data:/var/lib/mysql healthcheck: test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u$${MYSQL_USER} -p$${MYSQL_PASSWORD} --silent"] interval: 10s timeout: 5s retries: 20 restart: unless-stopped redis: image: redis:7 volumes: - tg_sales_redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 20 restart: unless-stopped minio: image: minio/minio:latest command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: ${MINIO_ACCESS_KEY} MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY} ports: - "127.0.0.1:9000:9000" - "127.0.0.1:9001:9001" volumes: - tg_sales_minio_data:/data restart: unless-stopped minio-init: image: minio/mc:latest depends_on: - minio environment: MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} MINIO_BUCKET: ${MINIO_BUCKET} entrypoint: > /bin/sh -c " until mc alias set local http://minio:9000 $$MINIO_ACCESS_KEY $$MINIO_SECRET_KEY; do sleep 2; done && mc mb --ignore-existing local/$$MINIO_BUCKET " backend: <<: *backend-common depends_on: mysql: condition: service_healthy redis: condition: service_healthy minio: condition: service_started ports: - "127.0.0.1:8080:8000" backend-scheduler: <<: *backend-common depends_on: backend: condition: service_started command: ["php", "artisan", "schedule:work"] tg-worker-sales01: <<: *worker-common environment: <<: *worker-environment TG_ACCOUNT_CODE: sales01 tg-worker-sales02: <<: *worker-common environment: <<: *worker-environment TG_ACCOUNT_CODE: sales02 tg-worker-sales03: <<: *worker-common environment: <<: *worker-environment TG_ACCOUNT_CODE: sales03 tg-worker-sales04: <<: *worker-common environment: <<: *worker-environment TG_ACCOUNT_CODE: sales04 tg-worker-sales05: <<: *worker-common environment: <<: *worker-environment TG_ACCOUNT_CODE: sales05 tg-worker-sales06: <<: *worker-common environment: <<: *worker-environment TG_ACCOUNT_CODE: sales06 tg-worker-sales07: <<: *worker-common environment: <<: *worker-environment TG_ACCOUNT_CODE: sales07 tg-worker-sales08: <<: *worker-common environment: <<: *worker-environment TG_ACCOUNT_CODE: sales08 tg-worker-sales09: <<: *worker-common environment: <<: *worker-environment TG_ACCOUNT_CODE: sales09 tg-worker-sales10: <<: *worker-common environment: <<: *worker-environment TG_ACCOUNT_CODE: sales10 volumes: tg_sales_mysql_data: name: tg_sales_mysql_data tg_sales_redis_data: name: tg_sales_redis_data tg_sales_minio_data: name: tg_sales_minio_data tg_sales_backend_storage: name: tg_sales_backend_storage tg_sales_tg_sessions: name: tg_sales_tg_sessions