services: postgres: container_name: mattermost-postgres ports: - "5432:5432" extends: file: build/docker-compose.common.yml service: postgres minio: container_name: mattermost-minio ports: - "9000:9000" extends: file: build/docker-compose.common.yml service: minio inbucket: container_name: mattermost-inbucket ports: - "9001:9001" - "10025:10025" - "10110:10110" extends: file: build/docker-compose.common.yml service: inbucket openldap: container_name: mattermost-openldap ports: - "389:389" - "636:636" extends: file: build/docker-compose.common.yml service: openldap elasticsearch: container_name: mattermost-elasticsearch ports: - "9200:9200" - "9300:9300" extends: file: build/docker-compose.common.yml service: elasticsearch opensearch: container_name: mattermost-opensearch ports: - "9201:9201" extends: file: build/docker-compose.common.yml service: opensearch redis: container_name: mattermost-redis ports: - "6379:6379" extends: file: build/docker-compose.common.yml service: redis dejavu: container_name: mattermost-dejavu ports: - "1358:1358" extends: file: build/docker-compose.common.yml service: dejavu keycloak: container_name: mattermost-saml ports: - "8484:8080" extends: file: build/docker-compose.common.yml service: keycloak prometheus: container_name: mattermost-prometheus ports: - "9090:9090" extends: file: build/docker-compose.common.yml service: prometheus grafana: container_name: mattermost-grafana ports: - "3000:3000" extends: file: build/docker-compose.common.yml service: grafana loki: container_name: mattermost-loki ports: - "3100:3100" extends: file: build/docker-compose.common.yml service: loki promtail: container_name: mattermost-promtail ports: - "3180:3180" extends: file: build/docker-compose.common.yml service: promtail start_dependencies: image: mattermost/mattermost-wait-for-dep:latest networks: - mm-test depends_on: - postgres - minio - inbucket - openldap - elasticsearch - opensearch - prometheus - grafana - loki - promtail command: postgres:5432 minio:9000 inbucket:9001 openldap:389 elasticsearch:9200 opensearch:9201 prometheus:9090 grafana:3000 loki:3100 promtail:3180 leader: build: context: . dockerfile: ./build/Dockerfile.buildenv working_dir: '/home/mattermost-server/server' environment: - "MM_SQLSETTINGS_DRIVERNAME=postgres" - "MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:mostest@postgres/mattermost_test?sslmode=disable\u0026connect_timeout=10" - "MM_NO_DOCKER=true" - "RUN_SERVER_IN_BACKGROUND=false" - "MM_CLUSTERSETTINGS_ENABLE=true" - "MM_CLUSTERSETTINGS_CLUSTERNAME=mm_dev_cluster" - "MM_LOGSETTINGS_FILELOCATION=./logs/leader" networks: - mm-test depends_on: - start_dependencies volumes: - './../:/home/mattermost-server' - './../../enterprise:/home/enterprise' restart: on-failure healthcheck: test: ["CMD", "curl", "-f", "http://leader:8065/api/v4/system/ping"] interval: 5s timeout: 30s retries: 30 start_period: 5m user: ${CURRENT_UID} command: ['make', 'run-server'] expose: - "8065" - "8064/tcp" - "8064/udp" - "8074/tcp" - "8074/udp" - "8075" follower: build: context: . dockerfile: ./build/Dockerfile.buildenv working_dir: '/home/mattermost-server/server' environment: - "MM_SQLSETTINGS_DRIVERNAME=postgres" - "MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:mostest@postgres/mattermost_test?sslmode=disable\u0026connect_timeout=10" - "MM_NO_DOCKER=true" - "RUN_SERVER_IN_BACKGROUND=false" - "MM_CLUSTERSETTINGS_ENABLE=true" - "MM_CLUSTERSETTINGS_CLUSTERNAME=mm_dev_cluster" - "MM_LOGSETTINGS_FILELOCATION=./logs/follower" networks: - mm-test depends_on: - leader volumes: - './../:/home/mattermost-server:Z' - './../../enterprise:/home/enterprise:Z' healthcheck: test: ["CMD", "curl", "-f", "http://follower:8065/api/v4/system/ping"] interval: 5s timeout: 30s retries: 30 start_period: 5m user: ${CURRENT_UID} command: ['make', 'run-server'] restart: on-failure expose: - "8065" - "8064/tcp" - "8064/udp" - "8074/tcp" - "8074/udp" - "8075" follower2: build: context: . dockerfile: ./build/Dockerfile.buildenv working_dir: '/home/mattermost-server/server' environment: - "MM_SQLSETTINGS_DRIVERNAME=postgres" - "MM_SQLSETTINGS_DATASOURCE=postgres://mmuser:mostest@postgres/mattermost_test?sslmode=disable\u0026connect_timeout=10" - "MM_NO_DOCKER=true" - "RUN_SERVER_IN_BACKGROUND=false" - "MM_CLUSTERSETTINGS_ENABLE=true" - "MM_CLUSTERSETTINGS_CLUSTERNAME=mm_dev_cluster" - "MM_LOGSETTINGS_FILELOCATION=./logs/follower2" networks: - mm-test depends_on: - leader volumes: - './../:/home/mattermost-server:Z' - './../../enterprise:/home/enterprise:Z' healthcheck: test: ["CMD", "curl", "-f", "http://follower2:8065/api/v4/system/ping"] interval: 5s timeout: 30s retries: 30 start_period: 5m user: ${CURRENT_UID} command: ['make', 'run-server'] restart: on-failure expose: - "8065" - "8064/tcp" - "8064/udp" - "8074/tcp" - "8074/udp" - "8075" haproxy: image: nginx networks: - mm-test volumes: - ./build/docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:Z restart: on-failure depends_on: leader: condition: service_healthy follower: condition: service_healthy follower2: condition: service_healthy ports: - "8065:8065" networks: mm-test: driver: bridge ipam: driver: default config: - subnet: 192.168.254.0/24 ip_range: 192.168.254.0/24