#{{services
services:
#}}
#{{db
  db:
    image: mariadb:11.4
    container_name: ${orga}DB
    #disk_quota: 10G
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: ${restartPolicy}
    volumes:
      - ./initdb.d:/docker-entrypoint-initdb.d:ro
      - orgaDB:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    env_file:
      - ../../secret/env-${nextcloudDBName}
#      - ../../secret/env-${mattermostDBName}
      - ../../secret/env-${wordpressDBName}
    networks:
      - orgaNet
    healthcheck: # utilisé par init-db.sh pour la créa d'orga
      #maridb10.5
      #test: ["CMD", 'mysqladmin', 'ping', '-h', 'localhost', '-u', 'root', '-p$$MYSQL_ROOT_PASSWORD' ]
      #maridb11.4
      test: ["CMD", 'healthcheck.sh', '--su-mysql', '--connect', '--innodb_initialized']                      
      interval: 30s
      timeout: 30s
      retries: 5
#}}
#{{cloud
  cloud:
    image: nextcloud
    container_name: ${orga}${nextcloudServName}
    #disk_quota: 10G
    restart: ${restartPolicy}
    networks:
      - orgaNet
#      - postfixNet
    depends_on:
      - db
      #db:
      #    condition: service_healthy  # on peut mais ca va ralentir le process
    links:
      - db
    external_links:
      - ${smtpServName}:${smtpHost}
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.${orga}${nextcloudServName}.rule=Host(`${orga}${cloudHost}.${domain}`){{FOREIGN_NC}}"
      - "traefik.http.routers.${orga}${nextcloudServName}.middlewares=nextcloud-redirectregex1@file,nextcloud-redirectregex2@file"
    volumes:
      - cloudMain:/var/www/html
      - cloudData:/var/www/html/data
      - cloudConfig:/var/www/html/config
      - cloudApps:/var/www/html/apps
      - cloudCustomApps:/var/www/html/custom_apps
      - cloudThemes:/var/www/html/themes/
      - cloudPhp:/usr/local/etc/php/conf.d/
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
    env_file:
      - ../../secret/env-${nextcloudServName}
      - ../../secret/env-${nextcloudDBName}
    environment:
      - NEXTCLOUD_TRUSTED_DOMAINS=${orga}${cloudHost}.${domain}
      - SMTP_HOST=${smtpHost}
      - SMTP_PORT=25
      - MAIL_DOMAIN=${domain}
#}}
#{{agora
  agora:
    build:
      context: app
      # uncomment following lines for team edition or change UID/GID
      args:
        - edition=team
        - PUID=1000
        - PGID=1000
    container_name: ${orga}${mattermostServName}
    #disk_quota: 10G
    restart: ${restartPolicy}
    # memory: 1G
    networks:
      - orgaNet
#      - postfixNet
    expose: 
      - ${matterPort}
    depends_on:
      - db
      #db:
          # condition: service_healthy  # on peut mais ca va ralentir le process
    links:
      - db
    external_links:
      - ${smtpServName}:${smtpHost}.${domain}
    volumes:
      - matterConfig:/mattermost/config:rw
      - matterData:/mattermost/data:rw
      - matterLogs:/mattermost/logs:rw
      - matterPlugins:/mattermost/plugins:rw
      - matterClientPlugins:/mattermost/client/plugins:rw
      - matterIcons:/mattermost/client/images:ro
      - /etc/ssl:/etc/ssl:ro
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /etc/environment:/etc/environment:ro
    env_file:
      - ../../secret/env-${mattermostServName}
    environment:
      - VIRTUAL_HOST=${orga}${matterHost}.${domain}
      # in case your config is not in default location
      #- MM_CONFIG=/mattermost/config/config.json

    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.${orga}${mattermostServName}.rule=Host(`${orga}${matterHost}.${domain}`)"
#}}
#{{wp
  wordpress:
    image: wordpress
    container_name: ${orga}${wordpressServName}
    restart: ${restartPolicy}
    networks:
      - orgaNet
#      - postfixNet
    depends_on:
      - db
      #db:
         # condition: service_healthy  # on peut mais ca va ralentir le process
    links:
      - db
    external_links:
      - ${smtpServName}:${smtpHost}.${domain}
    env_file:
      - ../../secret/env-${wordpressServName}
    environment:
      - WORDPRESS_SMTP_HOST=${smtpHost}.${domain}
      - WORDPRESS_SMTP_PORT=25
      # - WORDPRESS_SMTP_USERNAME
      # - WORDPRESS_SMTP_PASSWORD
      # - WORDPRESS_SMTP_FROM=${orga}
      - WORDPRESS_SMTP_FROM_NAME=${orga}
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.${orga}${wordpressServName}.rule=Host(`${orga}${wordpressHost}.${domain}`){{FOREIGN_WP}}"
    volumes:
      - wordpress:/var/www/html
#      - ../../config/orgaTmpl/wp:/usr/local/bin/wp:ro
#}}
#{{wiki
  dokuwiki:
    image: mprasil/dokuwiki
    container_name: ${orga}${dokuwikiServName}
    #disk_quota: 10G
    restart: ${restartPolicy}
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.${orga}${dokuwikiServName}.rule=Host(`${orga}${dokuwikiHost}.${domain}`){{FOREIGN_DW}}"
    volumes:
      - wikiData:/dokuwiki/data
      - wikiConf:/dokuwiki/conf
      - wikiPlugins:/dokuwiki/lib/plugins
      - wikiLibtpl:/dokuwiki/lib/tpl
      - wikiLogs:/var/log
    networks:
      - orgaNet
#      - postfixNet
    external_links:
      - ${smtpServName}:${smtpHost}.${domain}
#}}
#{{castopod
  castopod:
    image: castopod/castopod:latest
    container_name: ${orga}${castopodServName}
    #disk_quota: 10G
    restart: ${restartPolicy}
    # memory: 1G
    networks:
      - orgaNet
#      - postfixNet
    expose: 
      - 8000
    depends_on:
      - db
    links:
      - db
    external_links:
      - ${smtpServName}:${smtpHost}.${domain}
    volumes:
      - castopodMedia:/var/www/castopod/public/media
    environment:
      CP_BASEURL: "https://${orga}${castopodHost}.${domain}"
      CP_ANALYTICS_SALT: qldsgfliuzrbhgmkjbdbmkvb
      VIRTUAL_PORT: 8000
      CP_CACHE_HANDLER: redis
      CP_REDIS_HOST: redis
      CP_DATABASE_HOSTNAME: db
    env_file:
      - ../../secret/env-${castopodServName}
      - ../../secret/env-${castopodDBName}
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.${orga}${castopodServName}.rule=Host(`${orga}${castopodHost}.${domain}`){{FOREIGN_POD}}"
  redis:
    image: redis:7.0-alpine
    container_name: ${orga}castopodCache
    volumes:
      - castopodCache:/data
    networks:
      - orgaNet
    env_file:
      - ../../secret/env-${castopodServName}
    command: --requirepass ${castopodRedisPassword} 
#}}



#{{services
volumes:
#}}
#{{db
  orgaDB:
    external: true
    name: orga_${orga}orgaDB
#}}
#{{agora
  matterConfig:
    external: true
    name: orga_${orga}matterConfig
  matterData:
    external: true
    name: orga_${orga}matterData
  matterLogs:
    external: true
    name: orga_${orga}matterLogs
  matterPlugins:
    external: true
    name: orga_${orga}matterPlugins
  matterClientPlugins:
    external: true
    name: orga_${orga}matterClientPlugins
  matterIcons:
    external: true
    name: matterIcons
#{{cloud
  cloudMain:
    external: true
    name: orga_${orga}cloudMain
  cloudData:
    external: true
    name: orga_${orga}cloudData
  cloudConfig:
    external: true
    name: orga_${orga}cloudConfig
  cloudApps:
    external: true
    name: orga_${orga}cloudApps
  cloudCustomApps:
    external: true
    name: orga_${orga}cloudCustomApps
  cloudThemes:
    external: true
    name: orga_${orga}cloudThemes
  cloudPhp:
    external: true
    name: orga_${orga}cloudPhp
#}}
#{{wiki
  wikiData:
    external: true
    name: orga_${orga}wikiData
  wikiConf:
    external: true
    name: orga_${orga}wikiConf
  wikiPlugins:
    external: true
    name: orga_${orga}wikiPlugins
  wikiLibtpl:
    external: true
    name: orga_${orga}wikiLibtpl
  wikiLogs:
    external: true
    name: orga_${orga}wikiLogs
#}}
#{{wp
  wordpress:
    external: true
    name: orga_${orga}wordpress
#}}
#{{castopod
  castopodMedia:
    external: true
    name: orga_${orga}castopodMedia
  castopodCache:
    external: true
    name: orga_${orga}castopodCache

#}}


networks:
  orgaNet:
    external: true
    name: ${orga}orgaNet
  # postfixNet:
  #   external:
  #     name: postfixNet