diff --git a/templates/docker-compose.yml.twig b/templates/docker-compose.yml.twig index 291ef3888e29f1e640948374b2a168bf5eafcb4f..e43ed02f4fec02312876138748cdd2f5cf054e30 100644 --- a/templates/docker-compose.yml.twig +++ b/templates/docker-compose.yml.twig @@ -630,3 +630,106 @@ services: traefik.http.routers.unlighthouse-{{ projectname }}.tls.certresolver: lakedrops {% endif %} {% endif %} +{% if invoiceninja.enable|default(0) %} + + in-db: + image: 'mysql:5' + environment: + - APP_ENV=production + - 'APP_URL=https://invoice-{{ projectdomain }}' + - 'APP_KEY={{ invoiceninja.api_key }}' + - APP_DEBUG=false + - REQUIRE_HTTPS=false + - PHANTOMJS_PDF_GENERATION=false + - PDF_GENERATOR=snappdf + - QUEUE_CONNECTION=database + - 'TRUSTED_PROXIES=*' + - IS_DOCKER=true + - DB_HOST=in-db + - DB_PORT=3306 + - DB_DATABASE=ninja + - DB_USERNAME=ninja + - DB_PASSWORD=ninja + - IN_USER_EMAIL={{ invoiceninja.admin_name }} + - IN_PASSWORD={{ invoiceninja.admin_pass }} + - MAIL_MAILER=smtp + - MAIL_HOST={{ invoiceninja.mail.host }} + - MAIL_PORT={{ invoiceninja.mail.port }} + - MAIL_USERNAME={{ invoiceninja.mail.user }} + - 'MAIL_PASSWORD={{ invoiceninja.mail.pass }}' + - MAIL_ENCRYPTION={{ invoiceninja.mail.security }} + - MAIL_FROM_ADDRESS={{ invoiceninja.mail.user }} + - "MAIL_FROM_NAME='{{ invoiceninja.mail.fromname }}'" + - MYSQL_ROOT_PASSWORD=ninjaAdm1nPassword + - MYSQL_USER=ninja + - MYSQL_PASSWORD=ninja + - MYSQL_DATABASE=ninja + volumes: + - '/etc/timezone:/etc/timezone:ro' + - '/etc/localtime:/etc/localtime:ro' + - '{{ projectrootfiles }}/in/mysql/data:/var/lib/mysql:rw,delegated' + in-app: + image: 'invoiceninja/invoiceninja:5' + depends_on: + - in-db + environment: + - APP_ENV=production + - 'APP_URL=https://invoice-{{ projectdomain }}' + - 'APP_KEY={{ invoiceninja.api_key }}' + - APP_DEBUG=false + - REQUIRE_HTTPS=false + - PHANTOMJS_PDF_GENERATION=false + - PDF_GENERATOR=snappdf + - QUEUE_CONNECTION=database + - 'TRUSTED_PROXIES=*' + - IS_DOCKER=true + - DB_HOST=in-db + - DB_PORT=3306 + - DB_DATABASE=ninja + - DB_USERNAME=ninja + - DB_PASSWORD=ninja + - IN_USER_EMAIL={{ invoiceninja.admin_name }} + - IN_PASSWORD={{ invoiceninja.admin_pass }} + - MAIL_MAILER=smtp + - MAIL_HOST={{ invoiceninja.mail.host }} + - MAIL_PORT={{ invoiceninja.mail.port }} + - MAIL_USERNAME={{ invoiceninja.mail.user }} + - 'MAIL_PASSWORD={{ invoiceninja.mail.pass }}' + - MAIL_ENCRYPTION={{ invoiceninja.mail.security }} + - MAIL_FROM_ADDRESS={{ invoiceninja.mail.user }} + - "MAIL_FROM_NAME='{{ invoiceninja.mail.fromname }}'" + - MYSQL_ROOT_PASSWORD=ninjaAdm1nPassword + - MYSQL_USER=ninja + - MYSQL_PASSWORD=ninja + - MYSQL_DATABASE=ninja + volumes: + - '/etc/timezone:/etc/timezone:ro' + - '/etc/localtime:/etc/localtime:ro' + - '{{ projectrootfiles }}/in/hosts:/etc/hosts:ro' + - '{{ projectrootfiles }}/in/app/public:/var/www/app/public:rw,delegated' + - '{{ projectrootfiles }}/in/app/storage:/var/www/app/storage:rw,delegated' + in-web: + image: nginx + networks: + - traefik-public + - default + depends_on: + - in-app + volumes: + - '/etc/timezone:/etc/timezone:ro' + - '/etc/localtime:/etc/localtime:ro' + - '{{ projectrootfiles }}/in/in-vhost.conf:/etc/nginx/conf.d/in-vhost.conf:ro' + - '{{ projectrootfiles }}/in/app/public:/var/www/app/public:ro' + labels: + traefik.enable: 'true' + traefik.docker.network: traefik-public +{% if basicauth.enable %} + traefik.http.middlewares.invoice_ninja-{{ projectname }}-auth.basicauth.users: {{ basicauth.code }} +{% endif %} + 'traefik.http.services.invoice_ninja{{ projectname }}.loadbalancer.server.port': 80 + 'traefik.http.routers.invoice_ninja{{ projectname }}.rule': Host(`invoice-{{ projectdomain }}`) +{% if drupal.live|default(0) or traefik.usessl %} + 'traefik.http.routers.invoice_ninja{{ projectname }}.tls': 'true' + 'traefik.http.routers.invoice_ninja{{ projectname }}.tls.certresolver': lakedrops +{% endif %} +{% endif %}