Files
invoiceninja-docker/debian/docker-compose.yml
2024-12-28 08:33:39 +01:00

104 lines
2.2 KiB
YAML

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
ports:
- "80:80"
env_file:
- ./.env
environment:
LARAVEL_ROLE: app
# https://frankenphp.dev/docs/production/#preparing-your-app
SERVER_NAME: :80
<<: *volumes
# HEALTHCHECK from frankenphp image
healthcheck:
start_period: 180s
depends_on:
mariadb:
condition: service_healthy
valkey:
condition: service_healthy
logging: *default-logging
app-worker:
image: invoiceninja/invoiceninja-debian:${TAG:-latest}
restart: unless-stopped
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
env_file:
- ./.env
environment:
LARAVEL_ROLE: scheduler
<<: *volumes
depends_on:
app:
condition: service_healthy
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
mariadb:
driver: local
valkey:
driver: local