# ignore: true # documentation: https://invoiceninja.github.io/selfhost.html # slogan: The leading open-source invoicing platform # tags: invoicing, billing, accounting, finance, self-hosted # port: 9000 services: invoice-ninja: image: invoiceninja/invoiceninja:5 environment: - SERVICE_FQDN_INVOICENINJA - APP_ENV=${APP_ENV:-production} - APP_URL=${SERVICE_FQDN_INVOICENINJA} - APP_KEY=${SERVICE_REALBASE64_INVOICENINJA} - APP_DEBUG=${APP_DEBUG:-false} - REQUIRE_HTTPS=${REQUIRE_HTTPS:-false} - PHANTOMJS_PDF_GENERATION=${PHANTOMJS_PDF_GENERATION:-false} - PDF_GENERATOR=${PDF_GENERATOR:-snappdf} - TRUSTED_PROXIES=${TRUSTED_PROXIES:-*} - QUEUE_CONNECTION=${QUEUE_CONNECTION:-database} - DB_HOST=${DB_HOST:-mariadb} - DB_PORT=${DB_PORT:-3306} - DB_DATABASE=${DB_DATABASE:-invoiceninja} - DB_USERNAME=$SERVICE_USER_INVOICENINJA - DB_PASSWORD=$SERVICE_PASSWORD_INVOICENINJA healthcheck: test: ['CMD', 'echo', 'ok'] interval: 5s timeout: 20s retries: 10 volumes: - invoice-ninja-public:/var/www/app/public - invoice-ninja-storage:/var/www/app/storage - type: bind source: ./php.ini target: /usr/local/etc/php/php.ini content: | session.auto_start = Off short_open_tag = Off error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED ; opcache.enable=1 ; opcache.preload=/srv/www/invoiceninja/current/preload.php ; opcache.preload_user=www-data ; ; The OPcache shared memory storage size. ; opcache.max_accelerated_files=300000 ; opcache.validate_timestamps=1 ; opcache.revalidate_freq=30 ; opcache.jit_buffer_size=256M ; opcache.jit=1205 ; opcache.memory_consumption=1024M post_max_size = 60M upload_max_filesize = 50M memory_limit=512M - type: bind source: ./php-cli.ini target: /usr/local/etc/php/php-cli.ini content: | session.auto_start = Off short_open_tag = Off error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED ; opcache.enable_cli=1 ; opcache.fast_shutdown=1 ; opcache.memory_consumption=256 ; opcache.interned_strings_buffer=8 ; opcache.max_accelerated_files=4000 ; opcache.revalidate_freq=60 ; # http://symfony.com/doc/current/performance.html ; realpath_cache_size = 4096K ; realpath_cache_ttl = 600 memory_limit = 2G post_max_size = 60M upload_max_filesize = 50M depends_on: mariadb: condition: service_healthy mariadb: image: mariadb:11 volumes: - mariadb-data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_ROOT - MYSQL_DATABASE=${DB_DATABASE:-invoiceninja} - MYSQL_USER=$SERVICE_USER_INVOICENINJA - MYSQL_PASSWORD=$SERVICE_PASSWORD_INVOICENINJA healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 5s timeout: 20s retries: 10