Full Mattermost server source with integrated Community Enterprise features. Includes vendor directory for offline/air-gapped builds. Structure: - enterprise-impl/: Enterprise feature implementations - enterprise-community/: Init files that register implementations - enterprise/: Bridge imports (community_imports.go) - vendor/: All dependencies for offline builds Build (online): go build ./cmd/mattermost Build (offline/air-gapped): go build -mod=vendor ./cmd/mattermost 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
135 lines
4.2 KiB
YAML
135 lines
4.2 KiB
YAML
services:
|
|
postgres:
|
|
image: "postgres:14"
|
|
restart: always
|
|
networks:
|
|
- mm-test
|
|
environment:
|
|
POSTGRES_USER: mmuser
|
|
POSTGRES_PASSWORD: mostest
|
|
POSTGRES_DB: mattermost_test
|
|
POSTGRES_INITDB_ARGS: "--auth-host=scram-sha-256 --auth-local=scram-sha-256"
|
|
command: postgres -c 'config_file=/etc/postgresql/postgresql.conf'
|
|
volumes:
|
|
- "./docker/postgres.conf:/etc/postgresql/postgresql.conf"
|
|
- "./docker/postgres_node_database.sql:/docker-entrypoint-initdb.d/postgres_node_database.sql"
|
|
healthcheck:
|
|
test: [ "CMD", "pg_isready", "-h", "localhost" ]
|
|
interval: 5s
|
|
timeout: 10s
|
|
retries: 3
|
|
minio:
|
|
image: "minio/minio:RELEASE.2024-06-22T05-26-45Z"
|
|
command: "server /data --console-address :9002"
|
|
networks:
|
|
- mm-test
|
|
environment:
|
|
MINIO_ROOT_USER: minioaccesskey
|
|
MINIO_ROOT_PASSWORD: miniosecretkey
|
|
MINIO_KMS_SECRET_KEY: my-minio-key:OSMM+vkKUTCvQs9YL/CVMIMt43HFhkUpqJxTmGl6rYw=
|
|
inbucket:
|
|
image: "inbucket/inbucket:stable"
|
|
restart: always
|
|
environment:
|
|
INBUCKET_WEB_ADDR: "0.0.0.0:9001"
|
|
INBUCKET_POP3_ADDR: "0.0.0.0:10110"
|
|
INBUCKET_SMTP_ADDR: "0.0.0.0:10025"
|
|
networks:
|
|
- mm-test
|
|
openldap:
|
|
image: "osixia/openldap:1.4.0"
|
|
restart: always
|
|
networks:
|
|
- mm-test
|
|
environment:
|
|
LDAP_TLS_VERIFY_CLIENT: "never"
|
|
LDAP_ORGANISATION: "Mattermost Test"
|
|
LDAP_DOMAIN: "mm.test.com"
|
|
LDAP_ADMIN_PASSWORD: "mostest"
|
|
elasticsearch:
|
|
image: "mattermostdevelopment/mattermost-elasticsearch:8.9.0"
|
|
networks:
|
|
- mm-test
|
|
environment:
|
|
http.host: "0.0.0.0"
|
|
http.port: 9200
|
|
http.cors.enabled: "true"
|
|
http.cors.allow-origin: "http://localhost:1358,http://127.0.0.1:1358"
|
|
http.cors.allow-headers: "X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization"
|
|
http.cors.allow-credentials: "true"
|
|
transport.host: "127.0.0.1"
|
|
xpack.security.enabled: "false"
|
|
action.destructive_requires_name: "false"
|
|
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
|
|
opensearch:
|
|
build:
|
|
context: .
|
|
dockerfile: ./Dockerfile.opensearch
|
|
networks:
|
|
- mm-test
|
|
environment:
|
|
http.host: "0.0.0.0"
|
|
http.port: 9201
|
|
http.cors.enabled: "true"
|
|
http.cors.allow-origin: "http://localhost:1358,http://127.0.0.1:1358"
|
|
http.cors.allow-headers: "X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization"
|
|
http.cors.allow-credentials: "true"
|
|
transport.host: "127.0.0.1"
|
|
discovery.type: single-node
|
|
plugins.security.disabled: "true"
|
|
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
|
|
redis:
|
|
image: "redis:7.4.0"
|
|
networks:
|
|
- mm-test
|
|
dejavu:
|
|
image: "appbaseio/dejavu:3.4.2"
|
|
networks:
|
|
- mm-test
|
|
keycloak:
|
|
image: "quay.io/keycloak/keycloak:23.0.7"
|
|
restart: always
|
|
entrypoint: /opt/keycloak/bin/kc.sh start --import-realm
|
|
networks:
|
|
- mm-test
|
|
environment:
|
|
KEYCLOAK_ADMIN: admin
|
|
KEYCLOAK_ADMIN_PASSWORD: admin
|
|
KC_HOSTNAME_STRICT: 'false'
|
|
KC_HOSTNAME_STRICT_HTTPS: 'false'
|
|
KC_HTTP_ENABLED: 'true'
|
|
volumes:
|
|
- "./docker/keycloak/realm-export.json:/opt/keycloak/data/import/realm-export.json"
|
|
prometheus:
|
|
image: "prom/prometheus:v2.46.0"
|
|
user: root
|
|
volumes:
|
|
- "./docker/prometheus.yml:/etc/prometheus/prometheus.yml"
|
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
|
networks:
|
|
- mm-test
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
grafana:
|
|
image: "grafana/grafana:10.4.2"
|
|
volumes:
|
|
- "./docker/grafana/grafana.ini:/etc/grafana/grafana.ini"
|
|
- "./docker/grafana/provisioning:/etc/grafana/provisioning"
|
|
- "./docker/grafana/dashboards:/var/lib/grafana/dashboards"
|
|
networks:
|
|
- mm-test
|
|
loki:
|
|
image: "grafana/loki:3.0.0"
|
|
networks:
|
|
- mm-test
|
|
promtail:
|
|
image: "grafana/promtail:3.0.0"
|
|
volumes:
|
|
- "./docker/promtail/promtail-local-config.yaml:/etc/promtail/docker-config.yaml"
|
|
- "/var/lib/docker/containers:/var/lib/docker/containers:ro"
|
|
- "/var/run/docker.sock:/var/run/docker.sock"
|
|
- "../logs:/logs"
|
|
command: -config.file=/etc/promtail/docker-config.yaml
|
|
networks:
|
|
- mm-test
|