services: app: image: mattermost/mattermost-team-edition:10.4 container_name: ${mattermostServName} restart: ${restartPolicy} volumes: - matterConfig:/mattermost/config:rw - matterData:/mattermost/data:rw - matterLogs:/mattermost/logs:rw - matterPlugins:/mattermost/plugins:rw - matterClientPlugins:/mattermost/client/plugins:rw - /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=mattermost.${domain} - MM_PASSWORDSETTINGS_MINIMUMLENGTH=10 - MM_PASSWORDSETTINGS_LOWERCASE=false - MM_PASSWORDSETTINGS_UPPERCASE=false - MM_PASSWORDSETTINGS_NUMBER=false - MM_PASSWORDSETTINGS_SYMBOL=true depends_on: - postgres links: - postgres expose: - ${matterPort} networks: - mattermostNet - postfixNet external_links: - ${smtpServName}:${smtpHost}.${domain} labels: - "traefik.enable=true" - "traefik.http.routers.${mattermostServName}.rule=Host(`${matterHost}.${domain}`)" - "traefik.http.services.${mattermostServName}.loadbalancer.server.port=${matterPort}" - "traefik.docker.network=mattermostNet" healthcheck: test: ["CMD", "curl", "-f", "http://app:${matterPort}"] interval: 20s retries: 10 start_period: 20s timeout: 10s postgres: image: postgres:17-alpine container_name: matterPG restart: ${restartPolicy} networks: - mattermostNet security_opt: - no-new-privileges:true pids_limit: 100 read_only: true tmpfs: - /tmp - /var/run/postgresql volumes: - matterPG:/var/lib/postgresql/data # environment: # timezone inside container # - TZ env_file: - ../../secret/env-${mattermostDBName} volumes: matterPG: matterConfig: matterData: matterLogs: matterPlugins: matterClientPlugins: matterConfigLangSrv: matterConfigLangClt: networks: mattermostNet: external: true name: mattermostNet postfixNet: external: true name: postfixNet