# name: invoiceninja x-logging: &default-logging options: max-size: "10m" max-file: "3" driver: json-file x-app-volumes: &volumes volumes: - ./.env:/app/.env - ./php/php.ini:/usr/local/etc/php/conf.d/zzz-php.ini:ro - app_cache:/var/www/html/bootstrap/cache - app_storage:/app/storage services: app: build: context: . image: invoiceninja/invoiceninja-debian:${TAG:-latest} restart: unless-stopped # php artisan help octane:frankenphp command: --log-level=info ports: - "80:8000" env_file: - ./.env environment: LARAVEL_ROLE: app <<: *volumes # HEALTHCHECK from frankenphp image healthcheck: start_period: 180s depends_on: mysql: condition: service_healthy redis: condition: service_healthy # mariadb: # condition: service_healthy # valkey: # condition: service_healthy logging: *default-logging app-worker: image: invoiceninja/invoiceninja-debian:${TAG:-latest} restart: unless-stopped # php artisan help queue:work command: --verbose --sleep=3 --tries=3 --max-time=3600 deploy: mode: replicated replicas: 2 env_file: - ./.env environment: LARAVEL_ROLE: worker <<: *volumes depends_on: app: condition: service_healthy logging: *default-logging app-scheduler: image: invoiceninja/invoiceninja-debian:${TAG:-latest} restart: unless-stopped # php artisan help schedule:work command: --verbose env_file: - ./.env environment: LARAVEL_ROLE: scheduler <<: *volumes depends_on: app: condition: service_healthy logging: *default-logging mysql: image: mysql:8 restart: unless-stopped env_file: - ./.env environment: MYSQL_DATABASE: ${DB_DATABASE} MYSQL_USER: ${DB_USERNAME} MYSQL_PASSWORD: ${DB_PASSWORD} MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} volumes: - mysql_data:/var/lib/mysql healthcheck: test: [ "CMD", "mysqladmin", "ping", "-h", "localhost", "-u${MYSQL_USER}", "-p${MYSQL_PASSWORD}" ] interval: 10s timeout: 5s retries: 5 logging: *default-logging redis: image: redis:alpine restart: unless-stopped volumes: - redis_data:/data healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 10s timeout: 5s retries: 5 logging: *default-logging # mariadb: # image: mariadb:11.4 # restart: unless-stopped # env_file: # - ./.env # environment: # MARIADB_DATABASE: ${DB_DATABASE} # MARIADB_USER: ${DB_USERNAME} # MARIADB_PASSWORD: ${DB_PASSWORD} # MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} # volumes: # - mariadb:/var/lib/mysql # healthcheck: # test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] # start_period: 60s # logging: *default-logging # valkey: # image: valkey/valkey:8 # restart: unless-stopped # volumes: # - valkey:/data # healthcheck: # test: [ "CMD", "valkey-cli", "ping" ] # start_period: 10s # logging: *default-logging volumes: app_cache: driver: local app_storage: driver: local mysql_data: driver: local redis_data: driver: local # mariadb: # driver: local # valkey: # driver: local