# documentation: https://docs.mattermost.com
# slogan: Mattermost is an open source, self-hosted Slack-alternative.
# category: mattermost
# tags: mattermost,slack,alternative
# logo: svgs/mattermost.svg
# port: 8065

services:
  mattermost:
    image: mattermost/mattermost-team-edition:release-10
    platform: linux/amd64
    volumes:
      - 'mattermost-data-config:/mattermost/config:rw'
      - 'mattermost-data-data:/mattermost/data:rw'
      - 'mattermost-data-logs:/mattermost/logs:rw'
      - 'mattermost-data-plugins:/mattermost/plugins:rw'
      - 'mattermost-data-client-plugins:/mattermost/client/plugins:rw'
      - 'mattermost-data-bleve-indexes:/mattermost/bleve-indexes:rw'
    environment:
      - SERVICE_URL_MATTERMOST_8065
      - MM_SERVICESETTINGS_SITEURL=${SERVICE_URL_MATTERMOST}
      - TZ=${TZ:-UTC}
      - MM_SQLSETTINGS_DRIVERNAME=postgres
      - MM_SQLSETTINGS_DATASOURCE=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgres:5432/$POSTGRES_DB?sslmode=disable&connect_timeout=10
      - MM_BLEVESETTINGS_INDEXDIR=/mattermost/bleve-indexes
    depends_on:
      postgres:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://127.0.0.1:8065"]
      interval: 5s
      timeout: 20s
      retries: 10

  postgres:
    image: postgres:16-alpine
    volumes:
      - postgresql-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=$SERVICE_USER_POSTGRES
      - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
      - POSTGRES_DB=${POSTGRES_DB:-mattermost}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 20s
      retries: 10
