version: '3.8' services: app: build: . ports: - "8000:8000" environment: - DATABASE_URL=sqlite:///./data/amo_data.db - REDIS_URL=redis://redis:6379/0 - AMO_CRM_DOMAIN=${AMO_CRM_DOMAIN} - AMO_CRM_ACCESS_TOKEN=${AMO_CRM_ACCESS_TOKEN} - GOOGLE_SERVICE_ACCOUNT_FILE=${GOOGLE_SERVICE_ACCOUNT_FILE} - GOOGLE_SCOPES=${GOOGLE_SCOPES} - API_V1_STR=/api/v1 - LOG_LEVEL=INFO volumes: - ./data:/app/data - ./credentials:/app/credentials:ro depends_on: - redis restart: unless-stopped networks: - amo-network redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data restart: unless-stopped networks: - amo-network celery-worker: build: . command: python -m celery -A workers.celery_app worker --loglevel=info environment: - DATABASE_URL=sqlite:///./data/amo_data.db - REDIS_URL=redis://redis:6379/0 - AMO_CRM_DOMAIN=${AMO_CRM_DOMAIN} - AMO_CRM_ACCESS_TOKEN=${AMO_CRM_ACCESS_TOKEN} - GOOGLE_SERVICE_ACCOUNT_FILE=${GOOGLE_SERVICE_ACCOUNT_FILE} - GOOGLE_SCOPES=${GOOGLE_SCOPES} - API_V1_STR=/api/v1 - LOG_LEVEL=INFO volumes: - ./data:/app/data - ./credentials:/app/credentials:ro depends_on: - redis restart: unless-stopped networks: - amo-network celery-beat: build: . command: python -m celery -A workers.celery_app beat --loglevel=info environment: - DATABASE_URL=sqlite:///./data/amo_data.db - REDIS_URL=redis://redis:6379/0 - AMO_CRM_DOMAIN=${AMO_CRM_DOMAIN} - AMO_CRM_ACCESS_TOKEN=${AMO_CRM_ACCESS_TOKEN} - GOOGLE_SERVICE_ACCOUNT_FILE=${GOOGLE_SERVICE_ACCOUNT_FILE} - GOOGLE_SCOPES=${GOOGLE_SCOPES} - API_V1_STR=/api/v1 - LOG_LEVEL=INFO volumes: - ./data:/app/data - ./credentials:/app/credentials:ro depends_on: - redis restart: unless-stopped networks: - amo-network volumes: redis_data: networks: amo-network: driver: bridge