This is fork of the https://github.com/mattermost/mattermost-docker project with some minors modifications, mainly to give the possibility to specify a hostname and a port for the Nginx part
This project enables deployment of a Mattermost server in a multi-node production configuration using Docker.
Notes:
- To install this Docker project on AWS Elastic Beanstalk please see AWS Elastic Beanstalk Guide.
- To install Mattermost without Docker directly onto a Linux-based operating systems, please see Admin Guide.
The following instructions deploy Mattermost in a production configuration using multi-node Docker Compose set up.
Open docker-compose.yml and set the various variables to match your infrastructure
-
Database
Set MM_DBNAME to the name ot the database use by Mattermost
Set the two variables MM_USERNAME & MM_PASSWORD with the username/password that will have the right to use the database
Set DB_HOST and DB_PORT with the hostname and port on which your Postgresql will run
-
APP server
Set MATTERMOST_APP_SERVER and PLATFORM_PORT_80_TCP_PORT with the hostname and port on which your APP server will run
-
Open docker-compose.yml and set
MATTERMOST_ENABLE_SSL
to true.environment: - MATTERMOST_ENABLE_SSL=true
-
Put your SSL certificate as
./volumes/web/cert/cert.pem
and the private key that has no password as./volumes/web/cert/key-no-password.pem
. If you don't have them you may generate a self-signed SSL certificate. -
Build and run mattermost
docker-compose up -d
-
Open
https://your.domain
with your web browser.
-
Open docker-compose.yml and set
MATTERMOST_ENABLE_SSL
to false.environment: - MATTERMOST_ENABLE_SSL=false
-
Build and run mattermost
docker-compose up -d
-
Open
http://your.domain
with your web browser.
docker-compose start
docker-compose stop
docker-compose stop && docker-compose rm
sudo rm -rf volumes
When AWS S3 environment variables are specified on db docker container, it enables Wal-E backup to S3.
docker run -d --name mattermost-db \
-e AWS_ACCESS_KEY_ID=XXXX \
-e AWS_SECRET_ACCESS_KEY=XXXX \
-e WALE_S3_PREFIX=s3://BUCKET_NAME/PATH \
-e AWS_REGION=us-east-1
-v ./volumes/db/var/lib/postgresql/data:/var/lib/postgresql/data
-v /etc/localtime:/etc/localtime:ro
db
All four environment variables are required. It will enable completed WAL segments sent to archive storage (S3). The base backup and clean up can be done through the following command:
# base backup
docker exec mattermost-db su - postgres sh -c "/usr/bin/envdir /etc/wal-e.d/env /usr/local/bin/wal-e backup-push /var/lib/postgresql/data"
# keep the most recent 7 base backups and remove the old ones
docker exec mattermost-db su - postgres sh -c "/usr/bin/envdir /etc/wal-e.d/env /usr/local/bin/wal-e delete --confirm retain 7"
Those tasks can be executed through a cron job or systemd timer.
You need to migrate your database before upgrading mattermost to 3.0.x from 2.x. Run these commands in the latest mattermost-docker directory.
docker-compose rm -f app
docker-compose build app
docker-compose run app -upgrade_db_30
docker-compose up -d
See the offical Upgrade Guide for more details.
- Do not modify the Listen Address in Service Settings.
- Rarely 'app' container fails to start because of "connection refused" to database. Workaround: Restart the container.
If you want to know how to use docker-compose, see the overview page.
If you want to run Mattermost on Kubernetes you can start with the manifest examples in the kubernetes folder
For the server configurations, see prod-ubuntu.rst of mattermost.