services: app: image: codeberg.org/lvl0/ffr:latest # build: # context: ../.. # dockerfile: docker/production/Dockerfile container_name: ffr-app restart: unless-stopped working_dir: /var/www/html environment: - APP_ENV=production - APP_DEBUG=false - DB_CONNECTION=mysql - DB_HOST=db - DB_PORT=3306 - DB_DATABASE=ffr - DB_USERNAME=ffr_user - DB_PASSWORD=ffr_password - REDIS_HOST=redis - REDIS_PORT=6379 - CACHE_DRIVER=redis - SESSION_DRIVER=redis - QUEUE_CONNECTION=redis volumes: [] ports: - "8000:80" depends_on: db: condition: service_healthy redis: condition: service_started networks: - ffr-network queue: image: codeberg.org/lvl0/ffr:latest container_name: ffr-queue restart: unless-stopped working_dir: /var/www/html environment: - APP_ENV=production - APP_DEBUG=false - DB_CONNECTION=mysql - DB_HOST=db - DB_PORT=3306 - DB_DATABASE=ffr - DB_USERNAME=ffr_user - DB_PASSWORD=ffr_password - REDIS_HOST=redis - REDIS_PORT=6379 - CACHE_DRIVER=redis - SESSION_DRIVER=redis - QUEUE_CONNECTION=redis command: ["php", "artisan", "horizon"] depends_on: db: condition: service_healthy redis: condition: service_started networks: - ffr-network scheduler: image: codeberg.org/lvl0/ffr:latest container_name: ffr-scheduler restart: unless-stopped working_dir: /var/www/html environment: - APP_ENV=production - APP_DEBUG=false - DB_CONNECTION=mysql - DB_HOST=db - DB_PORT=3306 - DB_DATABASE=ffr - DB_USERNAME=ffr_user - DB_PASSWORD=ffr_password - REDIS_HOST=redis - REDIS_PORT=6379 - CACHE_DRIVER=redis - SESSION_DRIVER=redis - QUEUE_CONNECTION=redis command: ["sh", "-c", "while true; do php artisan schedule:run --verbose --no-interaction; sleep 60; done"] depends_on: db: condition: service_healthy redis: condition: service_started networks: - ffr-network db: image: docker.io/library/mysql:8.4 container_name: ffr-db restart: unless-stopped environment: - MYSQL_DATABASE=ffr - MYSQL_USER=ffr_user - MYSQL_PASSWORD=ffr_password - MYSQL_ROOT_PASSWORD=root_password volumes: - db_data:/var/lib/mysql ports: - "3306:3306" healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "ffr_user", "-pffr_password"] timeout: 5s retries: 5 interval: 3s start_period: 30s networks: - ffr-network redis: image: docker.io/library/redis:7-alpine container_name: ffr-redis restart: unless-stopped volumes: - redis_data:/data networks: - ffr-network networks: ffr-network: driver: bridge volumes: db_data: driver: local redis_data: driver: local