version: "3.9" services: reverse: container_name: nginx hostname: nginx image: nginx ports: - "80:80" - "443:443" volumes: - ./nginx:/etc/nginx/conf.d - ./cert:/etc/nginx/ssl networks: - loop-network depends_on: - loop loop: container_name: loop image: "registry.loop.ru/loop/server:10.0.3" restart: "unless-stopped" depends_on: - "db" - "s3" ports: - "8065:8065" - "8443:8443/udp" environment: MM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: "https://push.loop.ru" #This evn indicates the server that sends push notifications. MM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true" #This env indicates whether push notifications are allowed for email MM_EXPERIMENTALSETTINGS_ENABLEAPPBAR: "true" #This env indicates whether the application panel is enabled MM_FEATUREFLAGS_AppsEnabled: "true" #Indicates the availability and ability to use certain applications or functions, for example, access to the gallery to download images MM_FILESETTINGS_AMAZONS3ACCESSKEYID: ${ACCESS_KEY_ID} #Access Key ID to access s3 storage MM_FILESETTINGS_AMAZONS3BUCKET: ${BUCKET_NAME} #The name of the S3 bucket where the files are stored MM_FILESETTINGS_AMAZONS3ENDPOINT: "minio:9000" #The URL of the S3 storage endpoint MM_FILESETTINGS_AMAZONS3PATHPREFIX: "loop" #This option allows you to specify the path to files on S3 MM_FILESETTINGS_AMAZONS3SECRETACCESSKEY: ${SECRET_ACCESS_KEY} #The secret key for accessing S3 storage MM_FILESETTINGS_AMAZONS3SSE: "false" #Env indicates whether SSL (Server-Side Encryption) is enabled for S3 MM_FILESETTINGS_AMAZONS3SSL: "false" #Env indicates whether the connection to Amazon S3 should take place over SSL MM_FILESETTINGS_DRIVERNAME: "amazons3" #The name of the driver for working with files MM_FILESETTINGS_MAXFILESIZE: 1048576000 #The maximum file size to download, specified in bytes. MM_JOBSETTINGS_RUNJOBS: "false" #Specifies whether job should be performed MM_JOBSETTINGS_RUNSCHEDULER: "false" #The flag indicates whether the task scheduler should be started MM_LOGSETTINGS_CONSOLEJSON: "false" #The flag indicates whether the output to the console should be in JSON format MM_LOGSETTINGS_CONSOLELEVEL: "DEBUG" #Logging level for console output MM_LOGSETTINGS_FILELEVEL: "DEBUG" #The logging level for writing to a file MM_PLUGINSETTINGS_AUTOMATICPREPACKAGEDPLUGINS: "true" #The flag indicates whether automatic loading of pre-packaged plugins is allowed MM_PLUGINSETTINGS_ENABLEUPLOADS: "true" #The flag indicates whether plugin downloads are allowed MM_SERVICEENVIRONMENT: "production" #The environment in which the application is running (for example, "production") MM_SERVICESETTINGS_ENABLEBOTACCOUNTCREATION: "true" #The flag indicates whether the creation of bot accounts is allowed MM_SERVICESETTINGS_ENABLECUSTOMEMOJI: "true" #Responsible for the ability to use custom emojis in the service or application MM_SERVICESETTINGS_ENABLEDEVELOPER: "true" #The flag indicates whether developer mode is enabled MM_SERVICESETTINGS_ENABLELINKPREVIEWS: "true" #Responsible for the setting that allows you to activate or deactivate the preview of links in the application or service MM_SERVICESETTINGS_ENABLEOAUTHSERVICEPROVIDER: "true" #It is used to determine whether the use of third-party OAuth service providers is allowed MM_SERVICESETTINGS_ENABLETESTING: "true" #The flag indicates whether testing is allowed MM_SERVICESETTINGS_ENABLEUSERACCESSTOKENS: "true" #The flag indicates whether user access tokens are allowed MM_SERVICESETTINGS_GIPHYSDKKEY: ${GIPHYSDKKEY} #Giphy SDK key for integration with Giphy MM_SERVICESETTINGS_LICENSEFILELOCATION: "/mattermost/config/license.txt" #The path to the license file MM_SERVICESETTINGS_LISTENADDRESS: ":8065" #The address and port on which the service is listening. MM_SERVICESETTINGS_SITEURL: ${HTTP_PROTOCOL}${SITEURL} #The public URL of the service. MM_SQLSETTINGS_DATASOURCE: "postgres://${PG_USER}:${PG_PASSWORD}@db/${PG_DB_NAME}?sslmode=disable\u0026connect_timeout=10" #Data source for connecting to the PostgreSQL database MM_SQLSETTINGS_DRIVERNAME: "postgres" #Name of the database driver MM_TEAMSETTINGS_MAXUSERSPERTEAM: 500 #Maximum number of users per team volumes: - loop-config:/mattermost/config/:rw - loop-data:/mattermost/data/:rw - loop-logs:/mattermost/logs/:rw - loop-plugins:/mattermost/plugins/:rw - loop-client-plugins:/mattermost/client/plugins/:rw networks: - loop-network db: image: "postgres:15-alpine3.21" restart: "unless-stopped" environment: POSTGRES_PASSWORD: ${PG_PASSWORD} POSTGRES_USER: ${PG_USER} POSTGRES_DB: ${PG_DB_NAME} volumes: - ./db:/var/lib/postgresql/data networks: - loop-network s3: container_name: minio image: minio/minio:RELEASE.2022-08-26T19-53-15Z restart: unless-stopped environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} command: server --address :9000 --console-address :9001 /data ports: - "9000" - "9001" volumes: - ./minio:/data networks: - loop-network s3-client: container_name: minio-client image: minio/mc:RELEASE.2022-08-28T20-08-11Z volumes: - ./minio:/tmp/policies environment: AWS_ACCESS_KEY_ID: ${ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY: ${SECRET_ACCESS_KEY} entrypoint: > /bin/sh -c " until (/usr/bin/mc config host add loop http://minio:9000 ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD}) do echo '...waiting...' && sleep 1; done; /usr/bin/mc mb loop/${BUCKET_NAME}; /usr/bin/mc admin user add loop ${ACCESS_KEY_ID} ${SECRET_ACCESS_KEY}; /usr/bin/mc admin policy set loop readwrite user= ${ACCESS_KEY_ID}; exit 0; " networks: - loop-network depends_on: - s3 networks: loop-network: volumes: db: minio: loop-config: loop-data: loop-logs: loop-plugins: loop-client-plugins: