x-logging: &default-logging driver: "json-file" options: tag: "{{.Name}}" services: postgres: image: "postgres:14" logging: *default-logging restart: always networks: - mm-test environment: POSTGRES_USER: mmuser POSTGRES_PASSWORD: ${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:Z" - "./docker/postgres_node_database.sql:/docker-entrypoint-initdb.d/postgres_node_database.sql:Z" healthcheck: test: [ "CMD", "pg_isready", "-h", "localhost" ] interval: 5s timeout: 10s retries: 3 minio: image: "minio/minio:RELEASE.2024-06-22T05-26-45Z" logging: *default-logging 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= azurite: image: "mcr.microsoft.com/azure-storage/azurite:3.34.0" logging: *default-logging command: "azurite-blob --blobHost 0.0.0.0 --blobPort 10000 --skipApiVersionCheck" networks: - mm-test inbucket: image: "inbucket/inbucket:3.1.1" logging: *default-logging 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" logging: *default-logging 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: build: context: . dockerfile: ./Dockerfile.elasticsearch args: ELASTICSEARCH_VERSION: ${ELASTICSEARCH_VERSION:-9.0.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 args: OPENSEARCH_VERSION: ${OPENSEARCH_VERSION:-3.0.0} 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" DISABLE_INSTALL_DEMO_CONFIG: "true" OPENSEARCH_INITIAL_ADMIN_PASSWORD: "Test@dmin_123" OPENSEARCH_JAVA_OPTS: "-Xms512m -Xmx512m" redis: image: "redis:7.4.0" logging: *default-logging networks: - mm-test dejavu: image: "appbaseio/dejavu:3.4.2" logging: *default-logging networks: - mm-test keycloak: image: "quay.io/keycloak/keycloak:23.0.7" logging: *default-logging 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:Z" prometheus: image: "prom/prometheus:v2.46.0" logging: *default-logging user: root volumes: - "./docker/prometheus.yml:/etc/prometheus/prometheus.yml:Z" - "/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" logging: *default-logging volumes: - "./docker/grafana/grafana.ini:/etc/grafana/grafana.ini:Z" - "./docker/grafana/provisioning:/etc/grafana/provisioning:Z" - "./docker/grafana/dashboards:/var/lib/grafana/dashboards:Z" networks: - mm-test loki: image: "grafana/loki:3.0.0" logging: *default-logging volumes: - "./docker/loki/loki-config.yaml:/etc/loki/local-config.yaml:Z" networks: - mm-test otel-collector: image: "otel/opentelemetry-collector-contrib:0.145.0" logging: *default-logging user: "0:0" volumes: - "./docker/otel-collector/otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml:Z" - "/var/lib/docker/containers:/var/lib/docker/containers:ro" - "/var/run/docker.sock:/var/run/docker.sock:ro" - "../logs:/logs:ro,Z" command: ["--config=/etc/otelcol-contrib/config.yaml"] networks: - mm-test