Skip to content
Snippets Groups Projects
Commit 0959197b authored by PICHOU Kyâne's avatar PICHOU Kyâne
Browse files

Upgrade mattermost

parent 6164c356
No related branches found
No related tags found
No related merge requests found
......@@ -12,7 +12,7 @@ install:
- sleep 30
env:
- BUILD="mkdir -p ./volumes/app/mattermost/{data,logs,config} && docker-compose up -d"
- BUILD="mkdir -p ./volumes/app/mattermost/{data,logs,config,plugins} && docker-compose up -d"
- BUILD="docker run -d --name db -e POSTGRES_USER=mmuser -e POSTGRES_PASSWORD=mmuser_password -e POSTGRES_DB=mattermost mattermost-prod-db && sleep 5 && docker run -d --link db -p 80:8000 --name app mattermost-prod-app"
script:
......
# Maintainer Guide
# Maintainer Guide
This file outlines the current maintainer(s) of this open source project and expectations. It also includes credits to past maintainers and the project creator.
This file outlines the current maintainer(s) of this open source project and expectations. It also includes credits to past maintainers and the project creator.
## Project Name
## Project Name
When reference externally, please use this for the short name:
When reference externally, please use this for the short name:
- Production Docker deployment for Mattermost
- Production Docker deployment for Mattermost
Please use this long name:
Please use this long name:
- Production Docker deployment for Mattermost by the Mattermost open source project
## Maintainer(s)
The following people help to maintain this open source project:
The following people help to maintain this open source project:
| Current Maintainer(s) | Start Date |
| Current Maintainer(s) | Start Date |
|:-----------------------|:--------------|
| Pan Luo - @xcompass | Nov 30 2015 |
| Kyâne Pichou - @pichouk| Jun 01 2017 |
In case something happens where no maintainers are able to complete their responsibilies, the following sponsoring organization can help find a new maintainer:
In case something happens where no maintainers are able to complete their responsibilies, the following sponsoring organization can help find a new maintainer:
| Sponsoring Organization | Start Date |
| Sponsoring Organization | Start Date |
|:-------------------------------|:--------------|
| Mattermost Open Source Project | Dec 04 2016 |
## Activities
The following is a guide for current, new maintainers and prospective maintainers of this open source project to get started and to understand on-going responsibilities:
The following is a guide for current, new maintainers and prospective maintainers of this open source project to get started and to understand on-going responsibilities:
### Getting Started
### Getting Started
The following steps should be completed by a new maintainer
The following steps should be completed by a new maintainer
1. **Add your name** - Create a pull request to add your name, GitHub username and start date to this document.
1. **Add your name** - Create a pull request to add your name, GitHub username and start date to this document.
2. **Subscribe to mailing lists** - To be notified of new releases and security updates of Mattermost, subscribe to the [Mattermost Security Update Mailing List](http://mattermost.us11.list-manage.com/subscribe?u=6cdba22349ae374e188e7ab8e&id=3a93eb6929) and the [Mattermost Insiders Newsletter](http://mattermost.us11.list-manage.com/subscribe?u=6cdba22349ae374e188e7ab8e&id=2add1c8034)
### Updating
### Updating
When receive a mailing list email about a new security update or major version of Mattermost being released, update the version number of this project by doing the following:
When receive a mailing list email about a new security update or major version of Mattermost being released, update the version number of this project by doing the following:
In the **master branch**
- Change the [version number](https://github.com/mattermost/mattermost-docker/blob/master/app/Dockerfile#L6) to the latest release
- Tag the repo
- Change the [version number](https://github.com/mattermost/mattermost-docker/blob/master/app/Dockerfile#L6) to the latest release
- Tag the repo
### Issue and Pull Request Review
### Issue and Pull Request Review
Maintainer(s) should periodically review pull requests and issues submitted to provide feedback and to merge pull request changes when the maintainer feels the change would be appropriate.
Maintainer(s) should periodically review pull requests and issues submitted to provide feedback and to merge pull request changes when the maintainer feels the change would be appropriate.
## Credits
## Credits
PREVIOUS MAINTAINERS
PREVIOUS MAINTAINERS
| Maintainer | Start Date | End Date |
|:-----------------------|:--------------|:------------|
| Yi EungJun - @npcode | Nov 26 2015 | Nov 30 2016 |
| Yi EungJun - @npcode | Nov 26 2015 | Nov 30 2016 |
CREATOR
CREATOR
| Creator | Created Date |
|:-----------------------|:--------------|
......
......@@ -17,7 +17,7 @@ The following instructions deploy Mattermost in a production configuration using
### Requirements
* [docker] (version `1.12+`)
* [docker-compose] (version `1.10.0+` to support Compose file version `3.0`)
* [docker-compose] (version `1.10.0+` to support Compose file version `3.0`)
### Choose Edition to Install
......@@ -73,6 +73,26 @@ If you choose to use MySQL instead of PostgreSQL, you should set a different dat
* `MM_SQLSETTINGS_DATASOURCE` : `MM_USERNAME:MM_PASSWORD@tcp(DB_HOST:DB_PORT_NUMBER)/MM_DBNAME?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s`
Don't forget to replace all entries (beginning by `MM_` and `DB_`) in `MM_SQLSETTINGS_DATASOURCE` with the real variables values.
If you want to push Mattermost application to **Cloud Foundry**, use a `manifest.yml` like this one (with external PostgreSQL service):
```
---
applications:
- name: mattermost
docker:
image: mattermost/mattermost-prod-app
instances: 1
memory: 1G
disk_quota: 256M
env:
DB_HOST: database host address
DB_PORT_NUMBER: database port
MM_DBNAME: database name
MM_USERNAME: database username
MM_PASSWORD: database password
```
### Web server container
This image is optional, you should **not** use it when you have your own reverse-proxy. It is a simple front Web server for the Mattermost app container. If you use the provided `docker-compose.yml` file, you don't have to configure anything. But if your application container is reachable on custom host and/or port (eg. if you use a container provider), you should add those two environment variables :
* `APP_HOST`: application host address
......@@ -88,7 +108,7 @@ them you may generate a self-signed SSL certificate.
#### Start
If you are running docker with non root user, make sure the UID and GID in app/Dockerfile are the same as your current UID/GID
```
mkdir -p ./volumes/app/mattermost/{data,logs,config}
mkdir -p ./volumes/app/mattermost/{data,logs,config,plugins}
chown -R 2000:2000 ./volumes/app/mattermost/
docker-compose start
```
......@@ -134,15 +154,15 @@ Your Docker image should now be on the latest Mattermost version.
## Upgrading Mattermost to 4.9+
Docker images for `4.9.0` release introduce some important changes from [PR #241](https://github.com/mattermost/mattermost-docker/pull/241) to improve production use of Mattermost with Docker.
**There are 2 important changes for existing installations**
**There are 2 important changes for existing installations**
One important change is that we don't use `root` user by default to run the Mattermost application. So, as explained on [the README](https://github.com/mattermost/mattermost-docker#start), if you use host mounted volume you have to be sure that files on your host server have the correct UID/GID (by default those values are `2000`). In practice, you should just run following commands :
```
mkdir -p ./volumes/app/mattermost/{data,logs,config}
mkdir -p ./volumes/app/mattermost/{data,logs,config,plugins}
chown -R 2000:2000 ./volumes/app/mattermost/
```
The second important change is the port used by Mattermost application container. The default port is now `8000`, and existing installations that use port `80` will not work without a little configuration change. You have to open your Mattermost configuration file (`./volumes/app/mattermost/config/config.json` by default) and change the key `ServiceSettings.ListenAddress` to `:8000`.
The second important change is the port used by Mattermost application container. The default port is now `8000`, and existing installations that use port `80` will not work without a little configuration change. You have to open your Mattermost configuration file (`./volumes/app/mattermost/config/config.json` by default) and change the key `ServiceSettings.ListenAddress` to `:8000`.
Also if you use your own web-server/reverse-proxy you need to change its configuration to reach port `8000` of the Mattermost container.
......@@ -171,7 +191,7 @@ Running containerized applications on multi-node swarms involves specific data p
First, create mattermost directory structure on the docker hosts:
```
mkdir -p /var/lib/mattermost/{cert,config,data,logs}
mkdir -p /var/lib/mattermost/{cert,config,data,logs,plugins}
```
Then, fire up the stack in your swarm:
......
FROM alpine:3.6
FROM alpine:3.8
# Some ENV variables
ENV PATH="/mattermost/bin:${PATH}"
ENV MM_VERSION=4.10.0
ENV MM_VERSION=5.3.0
# Build argument to set Mattermost edition
ARG edition=enterprise
......@@ -28,14 +28,12 @@ RUN mkdir -p /mattermost/data \
&& if [ "$edition" = "team" ] ; then curl https://releases.mattermost.com/$MM_VERSION/mattermost-team-$MM_VERSION-linux-amd64.tar.gz | tar -xvz ; \
else curl https://releases.mattermost.com/$MM_VERSION/mattermost-$MM_VERSION-linux-amd64.tar.gz | tar -xvz ; fi \
&& cp /mattermost/config/config.json /config.json.save \
&& rm -rf /mattermost/config/config.json
# Get ready for production
RUN addgroup -g ${PGID} mattermost \
&& rm -rf /mattermost/config/config.json \
&& addgroup -g ${PGID} mattermost \
&& adduser -D -u ${PUID} -G mattermost -h /mattermost -D mattermost \
&& chown -R mattermost:mattermost /mattermost /config.json.save
&& chown -R mattermost:mattermost /mattermost /config.json.save
USER mattermost
USER mattermost
#Healthcheck to make sure container is ready
HEALTHCHECK CMD curl --fail http://localhost:8000 || exit 1
......@@ -44,10 +42,10 @@ HEALTHCHECK CMD curl --fail http://localhost:8000 || exit 1
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
WORKDIR /mattermost
CMD ["platform"]
CMD ["mattermost"]
# Expose port 8000 of the container
EXPOSE 8000
# Declare volumes for mount point directories
VOLUME ["/mattermost/data", "/mattermost/logs", "/mattermost/config"]
VOLUME ["/mattermost/data", "/mattermost/logs", "/mattermost/config", "/mattermost/plugins"]
......@@ -14,10 +14,10 @@ MM_DBNAME=${MM_DBNAME:-mattermost}
MM_CONFIG=${MM_CONFIG:-/mattermost/config/config.json}
if [ "${1:0:1}" = '-' ]; then
set -- platform "$@"
set -- mattermost "$@"
fi
if [ "$1" = 'platform' ]; then
if [ "$1" = 'mattermost' ]; then
# Check CLI args for a -config option
for ARG in $@;
do
......@@ -50,6 +50,7 @@ if [ "$1" = 'platform' ]; then
jq '.RateLimitSettings.Enable = true' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
jq '.SqlSettings.DriverName = "postgres"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
jq '.SqlSettings.AtRestEncryptKey = "'$(generate_salt)'"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
jq '.PluginSettings.Directory = "/mattermost/plugins/"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
else
echo "Using existing config file" $MM_CONFIG
fi
......@@ -77,7 +78,7 @@ if [ "$1" = 'platform' ]; then
# Necessary to avoid "panic: Failed to open sql connection pq: the database system is starting up"
sleep 1
echo "Starting platform"
echo "Starting mattermost"
fi
exec "$@"
......@@ -19,6 +19,12 @@
"sourcePath": "/var/app/current/app/mattermost/logs"
}
},
{
"name": "app-plugins",
"host": {
"sourcePath": "/var/app/current/app/mattermost/plugins"
}
},
{
"name": "db-data",
"host": {
......@@ -72,6 +78,10 @@
{
"sourceVolume": "app-logs",
"containerPath": "/mattermost/logs"
},
{
"sourceVolume": "app-plugins",
"containerPath": "/mattermost/plugins"
}
],
"links": [
......
......@@ -17,7 +17,7 @@ spec:
spec:
containers:
- name: mattermost-app
image: "mattermost/mattermost-prod-app:4.7.0"
image: "mattermost/mattermost-prod-app:5.3.0"
env:
- name: DB_HOST
valueFrom:
......
......@@ -67,6 +67,7 @@ services:
- /var/lib/mattermost/config:/mattermost/config:rw
- /var/lib/mattermost/data:/mattermost/data:rw
- /var/lib/mattermost/logs:/mattermost/logs:rw
- /var/lib/mattermost/plugins:/mattermost/plugins:rw
- /etc/localtime:/etc/localtime:ro
environment:
# use service's hostname
......
......@@ -66,6 +66,7 @@ services:
- /var/lib/mattermost/config:/mattermost/config:rw
- /var/lib/mattermost/data:/mattermost/data:rw
- /var/lib/mattermost/logs:/mattermost/logs:rw
- /var/lib/mattermost/plugins:/mattermost/plugins:rw
- /etc/localtime:/etc/localtime:ro
environment:
# use service's hostname
......
......@@ -22,7 +22,7 @@ services:
app:
build:
context: app
# comment out following lines for team edition or change UID/GID
# uncomment following lines for team edition or change UID/GID
args:
- edition=team
# - PUID=1000
......@@ -32,6 +32,7 @@ services:
- ./volumes/app/mattermost/config:/mattermost/config:rw
- ./volumes/app/mattermost/data:/mattermost/data:rw
- ./volumes/app/mattermost/logs:/mattermost/logs:rw
- ./volumes/app/mattermost/plugins:/mattermost/plugins:rw
- /etc/localtime:/etc/localtime:ro
environment:
# set same as db credentials and dbname
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment