# Customer: {{CUSTOMER_NAME}}
version: "3.9"

services:

  {{ABBREV}}-web:
    image: {{CMS_IMAGE}}
    environment:
      CMS_USE_MEMCACHED: "true"
      MEMCACHED_HOST: memcached
      CMS_ALIAS: "/{{ABBREV}}"
      MYSQL_HOST: {{MYSQL_HOST}}
      MYSQL_PORT: "{{MYSQL_PORT}}"
      MYSQL_DATABASE: {{MYSQL_DATABASE}}
      MYSQL_USER: {{MYSQL_USER}}
      MYSQL_PASSWORD: {{MYSQL_PASSWORD}}
      CMS_SERVER_NAME: {{CMS_SERVER_NAME}}
      CMS_SMTP_SERVER: {{SMTP_SERVER}}
      CMS_SMTP_USERNAME: {{SMTP_USERNAME}}
      CMS_SMTP_PASSWORD: {{SMTP_PASSWORD}}
      CMS_SMTP_USE_TLS: {{SMTP_USE_TLS}}
      CMS_SMTP_USE_STARTTLS: {{SMTP_USE_STARTTLS}}
      CMS_SMTP_REWRITE_DOMAIN: {{SMTP_REWRITE_DOMAIN}}
      CMS_SMTP_HOSTNAME: {{SMTP_HOSTNAME}}
      CMS_SMTP_FROM_LINE_OVERRIDE: {{SMTP_FROM_LINE_OVERRIDE}}
      CMS_PHP_POST_MAX_SIZE: {{PHP_POST_MAX_SIZE}}
      CMS_PHP_UPLOAD_MAX_FILESIZE: {{PHP_UPLOAD_MAX_FILESIZE}}
      CMS_PHP_MAX_EXECUTION_TIME: "{{PHP_MAX_EXECUTION_TIME}}"
    secrets:
      - global_mysql_host
      - global_mysql_port
    volumes:
      - {{ABBREV}}-cms-custom:/var/www/cms/custom
      - {{ABBREV}}-cms-backup:/var/www/backup
      - {{THEME_HOST_PATH}}:/var/www/cms/web/theme/custom
      - {{ABBREV}}-cms-library:/var/www/cms/library
      - {{ABBREV}}-cms-userscripts:/var/www/cms/web/userscripts
      - {{ABBREV}}-cms-ca-certs:/var/www/cms/ca-certs
    ports:
      - "{{HOST_HTTP_PORT}}:80"
    networks:
      {{ABBREV}}-net:
        aliases:
          - web
    deploy:
      restart_policy:
        condition: any
      resources:
        limits:
          memory: 1G

  {{ABBREV}}-memcached:
    image: {{MEMCACHED_IMAGE}}
    command: [memcached, -m, "15"]
    networks:
      {{ABBREV}}-net:
        aliases:
          - memcached
    deploy:
      restart_policy:
        condition: any
      resources:
        limits:
          memory: 100M

  {{ABBREV}}-quickchart:
    image: {{QUICKCHART_IMAGE}}
    networks:
      {{ABBREV}}-net:
        aliases:
          - quickchart
    deploy:
      restart_policy:
        condition: any

  {{ABBREV}}-newt:
    image: {{NEWT_IMAGE}}
    environment:
      PANGOLIN_ENDPOINT: {{PANGOLIN_ENDPOINT}}
      NEWT_ID: {{NEWT_ID}}
      NEWT_SECRET: {{NEWT_SECRET}}
    depends_on:
      - {{ABBREV}}-web
    networks:
      {{ABBREV}}-net: {}
    deploy:
      restart_policy:
        condition: any

networks:
  {{ABBREV}}-net:
    driver: overlay
    attachable: false

volumes:
  {{ABBREV}}-cms-custom:
    driver: local
    driver_opts:
      type: nfs
      device: "{{NFS_DEVICE_PREFIX}}/{{ABBREV}}/cms-custom"
      o: "{{NFS_OPTS}}"
  {{ABBREV}}-cms-backup:
    driver: local
    driver_opts:
      type: nfs
      device: "{{NFS_DEVICE_PREFIX}}/{{ABBREV}}/cms-backup"
      o: "{{NFS_OPTS}}"
  {{ABBREV}}-cms-library:
    driver: local
    driver_opts:
      type: nfs
      device: "{{NFS_DEVICE_PREFIX}}/{{ABBREV}}/cms-library"
      o: "{{NFS_OPTS}}"
  {{ABBREV}}-cms-userscripts:
    driver: local
    driver_opts:
      type: nfs
      device: "{{NFS_DEVICE_PREFIX}}/{{ABBREV}}/cms-userscripts"
      o: "{{NFS_OPTS}}"
  {{ABBREV}}-cms-ca-certs:
    driver: local
    driver_opts:
      type: nfs
      device: "{{NFS_DEVICE_PREFIX}}/{{ABBREV}}/cms-ca-certs"
      o: "{{NFS_OPTS}}"

secrets:
  {{ABBREV}}-cms-db-password:
    external: true
  {{ABBREV}}-cms-db-user:
    external: true
  global_mysql_host:
    external: true
  global_mysql_port:
    external: true
