--- version: "3.8" services: core: image: "maxking/mailman-core:0.3" hostname: mailman-core volumes: - "mailman-core:/opt/mailman/" networks: - internal - shared_mailu_network secrets: - db_password - django_secret_key - hyperkitty_api_key - mailman_rest_password environment: - DATABASE_CLASS=mailman.database.postgresql.PostgreSQLDatabase - DATABASE_DB=mailman - DATABASE_HOST=db - DATABASE_NAME=mailman - DATABASE_PASSWORD_FILE=/run/secrets/db_password - DATABASE_TYPE=postgres - DATABASE_USER=mailman - HYPERKITTY_API_KEY_FILE=/run/secrets/hyperkitty_api_key - MAILMAN_HOSTNAME=mailman-core - MAILMAN_REST_PASSWORD_FILE=/run/secrets/mailman_rest_password - MAILMAN_REST_USER=restadmin - MTA=postfix - SMTP_HOST - SMTP_PORT configs: - source: mailman_extra_cfg target: /opt/mailman/core/mailman-extra.cfg - source: core_entrypoint_sh target: /usr/local/bin/docker-entrypoint-custom.sh mode: 0555 entrypoint: /usr/local/bin/docker-entrypoint-custom.sh command: master --force web: image: "maxking/mailman-web:0.3" hostname: mailman-web networks: - internal - shared_mailu_network volumes: - "mailman-web:/opt/mailman-web-data" secrets: - db_password - django_secret_key - hyperkitty_api_key - mailman_rest_password environment: - DATABASE_HOST=db - DATABASE_NAME=mailman - DATABASE_PASSWORD_FILE=/run/secrets/db_password - DATABASE_TYPE=postgres - DATABASE_USER=mailman - HYPERKITTY_API_KEY_FILE=/run/secrets/hyperkitty_api_key - MAILMAN_ADMIN_EMAIL - MAILMAN_REST_PASSWORD_FILE=/run/secrets/mailman_rest_password - SECRET_KEY_FILE=/run/secrets/django_secret_key - SERVE_FROM_DOMAIN - SMTP_HOST - SMTP_PORT configs: - source: settings_local target: /opt/mailman-web/settings_local.py - source: web_entrypoint_sh target: /usr/local/bin/docker-entrypoint-custom.sh mode: 0555 entrypoint: /usr/local/bin/docker-entrypoint-custom.sh command: uwsgi --ini /opt/mailman-web/uwsgi.ini front: image: "nginx:1.21.1" environment: - DOMAIN - STACK_NAME configs: - source: nginx_conf target: /etc/nginx/nginx.conf networks: - proxy - internal volumes: - "mailman-web:/opt/mailman-web-data" deploy: update_config: failure_action: rollback labels: - "traefik.enable=true" - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80" - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" db: image: "postgres:13-alpine" secrets: - db_password networks: - internal environment: - POSTGRES_DB=mailman - POSTGRES_USER=mailman - POSTGRES_PASSWORD_FILE=/run/secrets/db_password volumes: - "db:/var/lib/postgresql/data" networks: internal: proxy: external: true shared_mailu_network: external: true name: ${SMTP_NETWORK} volumes: db: mailman-core: mailman-web: secrets: db_password: external: true name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION} hyperkitty_api_key: external: true name: ${STACK_NAME}_hyperkitty_api_key_${SECRET_HYPERKITTY_API_KEY_VERSION} django_secret_key: external: true name: ${STACK_NAME}_django_secret_key_${SECRET_DJANGO_SECRET_KEY_VERSION} mailman_rest_password: external: true name: ${STACK_NAME}_mailman_rest_password_${SECRET_MAILMAN_REST_PASSWORD_VERSION} configs: core_entrypoint_sh: name: ${STACK_NAME}_core_entrypoint_conf_${CORE_ENTRYPOINT_CONF_VERSION} file: entrypoint.core.sh.tmpl template_driver: golang web_entrypoint_sh: name: ${STACK_NAME}_web_entrypoint_conf_${WEB_ENTRYPOINT_CONF_VERSION} file: entrypoint.web.sh.tmpl template_driver: golang nginx_conf: name: ${STACK_NAME}_nginx_conf_${NGINX_CONF_VERSION} file: nginx.conf.tmpl template_driver: golang settings_local: name: ${STACK_NAME}_settings_local_${SETTINGS_LOCAL_VERSION} file: settings_local.py.tmpl template_driver: golang mailman_extra_cfg: name: ${STACK_NAME}_mailman_extra_cfg_${MAILMAN_EXTRA_CFG_VERSION} file: mailman-extra.cfg.tmpl template_driver: golang