mirror of
https://github.com/invoiceninja/dockerfiles.git
synced 2025-12-31 19:47:25 +01:00
148 lines
3.5 KiB
YAML
148 lines
3.5 KiB
YAML
# name: invoiceninja
|
|
|
|
x-logging: &default-logging
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
driver: json-file
|
|
|
|
x-app-volumes: &volumes
|
|
volumes:
|
|
- ./.env:/app/.env
|
|
- app_storage:/app/storage
|
|
- caddy_data:/data
|
|
|
|
services:
|
|
app:
|
|
build:
|
|
context: .
|
|
image: invoiceninja/invoiceninja-octane:${TAG:-latest}
|
|
restart: unless-stopped
|
|
# php artisan help octane:frankenphp
|
|
command: --port=80 --workers=2 --log-level=info
|
|
# command: --host=example.com --port=443 --workers=2 --https --http-redirect --log-level=info
|
|
ports:
|
|
- "80:80" # HTTP
|
|
# - "443:443" # HTTPS
|
|
# - "443:443/udp" # HTTP/3, Works for chromium based browser, but causes H3_GENERAL_PROTOCOL_ERROR for pdf previews in Firefox
|
|
env_file:
|
|
- ./.env
|
|
environment:
|
|
LARAVEL_ROLE: app
|
|
<<: *volumes
|
|
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-octane:${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
|
|
healthcheck:
|
|
test: ["CMD", "pgrep", "-f", "queue:work"]
|
|
start_period: 10s
|
|
depends_on:
|
|
app:
|
|
condition: service_healthy
|
|
logging: *default-logging
|
|
|
|
app-scheduler:
|
|
image: invoiceninja/invoiceninja-octane:${TAG:-latest}
|
|
restart: unless-stopped
|
|
# php artisan help schedule:work
|
|
command: --verbose
|
|
env_file:
|
|
- ./.env
|
|
environment:
|
|
LARAVEL_ROLE: scheduler
|
|
<<: *volumes
|
|
healthcheck:
|
|
test: ["CMD", "pgrep", "-f", "schedule:work"]
|
|
start_period: 10s
|
|
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_storage:
|
|
caddy_data:
|
|
mysql_data:
|
|
redis_data:
|
|
# mariadb:
|
|
# valkey:
|