mattermost/server/docker-compose.yaml
Carlos Garcia 8f24b500a6
Some checks are pending
API / build (push) Waiting to run
Server CI / Compute Go Version (push) Waiting to run
Server CI / Check mocks (push) Blocked by required conditions
Server CI / Check go mod tidy (push) Blocked by required conditions
Server CI / check-style (push) Blocked by required conditions
Server CI / Check serialization methods for hot structs (push) Blocked by required conditions
Server CI / Vet API (push) Blocked by required conditions
Server CI / Check migration files (push) Blocked by required conditions
Server CI / Generate email templates (push) Blocked by required conditions
Server CI / Check store layers (push) Blocked by required conditions
Server CI / Check mmctl docs (push) Blocked by required conditions
Server CI / Postgres with binary parameters (push) Blocked by required conditions
Server CI / Postgres (push) Blocked by required conditions
Server CI / Postgres (FIPS) (push) Blocked by required conditions
Server CI / Generate Test Coverage (push) Blocked by required conditions
Server CI / Run mmctl tests (push) Blocked by required conditions
Server CI / Run mmctl tests (FIPS) (push) Blocked by required conditions
Server CI / Build mattermost server app (push) Blocked by required conditions
Web App CI / check-lint (push) Waiting to run
Web App CI / check-i18n (push) Waiting to run
Web App CI / check-types (push) Waiting to run
Web App CI / test (push) Waiting to run
Web App CI / build (push) Waiting to run
selinux security context fixes in docker compose (#34394)
allow docker to apply proper security context to volume mounts
in case host is running SELinux security by adding :Z in affected
volume declarations
2025-11-14 17:32:56 +01:00

250 lines
6.3 KiB
YAML

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