diff --git a/README.md b/README.md index af3a232..fd786ab 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,14 @@ This is a basic reproduction that includes various components preconfigured like SAML, LDAP, advanced logging, prometheus, grafana, and elasticsearch. - [LDAP](#ldap) -- [MMCTL](#mmctl) +- [Commands](#commands) +- [Accounts](#accounts) +- [Grafana](#use-grafana) +- [Guides](#guides) + - [How to upgrade](#how-to-upgrade) + - [How to Downgrade](#how-to-downgrade) + - [Migrating to Config in DB](#using-config-in-db) + - [MMCTL](#mmctl) ## Making Changes @@ -102,19 +109,64 @@ Doing this will wipe anything you have in the database and any existing Mattermo 1. Modify the line in the `docker-compose.yml` file to be the version you want - You're just replacing the tag at the end, this one is `7.7` for example. It must be a version of Mattermost that exists on Docker. + You're just replacing the tag at the end, this one is `7.7` for example. It must be a version of Mattermost that exists on Docker. - ```bash - mattermost/mattermost-enterprise-edition:release-7.7 - ``` + ```bash + mattermost/mattermost-enterprise-edition:release-7.7 + ``` 2. Run `make downgrade` - This will: + This will: - - delete the database - - Restart the database container - - Restart the Mattermost container + - delete the database + - Restart the database container + - Restart the Mattermost container + +### Using Config in DB + +Config in DB has intentionally not been enabled by default to allow you to edit the `config.json` file directly for faster repros. However, if you want to migrate to config in DB just follow the below. + +1. Start the container and init the default data. `make start`... `y`. + +2. Edit the `docker-compose.yml` + + ```diff + mattermost: + environment: + - MM_SqlSettings_DriverName=postgres + - MM_SqlSettings_DataSource=postgres://mmuser:mmuser_password@cs-repro-postgres:5432/mattermost?sslmode=disable&connect_timeout=10&binary_parameters=yes + - MM_SAMLSETTINGS_IDPCERTIFICATEFILE=/mattermost/config/saml-cert.crt + # - MM_SqlSettings_DriverName=mysql + # - MM_SqlSettings_DataSource=mmuser:mmuser_password@tcp(mysql:3306)/mattermost?charset=utf8mb4,utf8&writeTimeout=30s + - MM_ServiceSettings_EnableLocalMode=true + - MM_ServiceSettings_LocalModeSocketLocation=/var/tmp/mattermost_local.socket + - MM_ServiceSettings_LicenseFileLocation=/mattermost/config/license.mattermost-enterprise + ## Disable this to migrate your config to the database + -# - MM_CONFIG=postgres://mmuser:mmuser_password@cs-repro-postgres:5432/mattermost?sslmode=disable&connect_timeout=10&binary_parameters=yes + + - MM_CONFIG=postgres://mmuser:mmuser_password@cs-repro-postgres:5432/mattermost?sslmode=disable&connect_timeout=10&binary_parameters=yes + ``` + +3. Move the config to the DB + + ```bash + docker exec -it cs-repro-mattermost mmctl config migrate ./config/config.json "postgres://mmuser:mmuser_password@cs-repro-postgres:5432/mattermost?sslmode=disable&connect_timeout=10&binary_parameters=yes" --local + ``` + +4. Restart Mattermost with a force stop / start to pickup the new env vars + + ```bash + make stop + make start + ``` + +### MMCTL + +To use `mmctl` it's already setup for local, just run the below docker command. + +```bash +docker exec -it cs-repro-mattermost mmctl user list --local +``` ## Use Grafana @@ -208,11 +260,3 @@ docker exec -it cs-repro-openldap ldapmodify \ -w GoodNewsEveryone \ -f /ldap/addUniqueIdToUsers.ldif ``` - -## MMCTL - -To use `mmctl` it's already setup for local, just run the below docker command. - -```bash -docker exec -it cs-repro-mattermost mmctl user list --localhost -``` \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 5982675..3bae22a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,29 +1,4 @@ services: - # mysql: - # container_name: cs-repro-mysql - # image: mysql:8 - # restart: always - # environment: - # MYSQL_DATABASE: "mattermost" - # # So you don't have to use root, but you can if you like - # MYSQL_USER: "mmuser" - # # You can use whatever password you like - # MYSQL_PASSWORD: "mmuser_password" - # # Password for root access - # MYSQL_ROOT_PASSWORD: "mmuser_password" - # healthcheck: - # test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] - # timeout: 20s - # retries: 10 - # ports: - # # : - # - "3306:3306" - # expose: - # # Opens port 3306 on the container - # - "3306" - # # Where our data will be persisted - # volumes: - # - ./volumes/db/mysql:/var/lib/mysql postgres: container_name: cs-repro-postgres environment: @@ -49,48 +24,6 @@ services: interval: 10s timeout: 3s retries: 3 - # postgres-replica: - # container_name: cs-repro-postgres-replica - # environment: - # - POSTGRES_USER=mmuser - # - POSTGRES_PASSWORD=mmuser_password - # # - POSTGRES_DB=mattermost - # - LISTEN_ADDRESS="*" - # image: postgres:13-alpine - # restart: unless-stopped - # ports: - # - "5433:5432" - # security_opt: - # - no-new-privileges:true - # pids_limit: 100 - # read_only: false - # tmpfs: - # - /tmp - # - /var/run/postgresql - # volumes: - # # - ./volumes/db-replica/var/lib/postgresql/data:/var/lib/postgresql/data - # - ./volumes/db-replica/data2:/var/lib/postgresql/data - # postgres-replica2: - # container_name: cs-repro-postgres-replica2 - # environment: - # - POSTGRES_USER=mmuser - # - POSTGRES_PASSWORD=mmuser_password - # # - POSTGRES_DB=mattermost - # - LISTEN_ADDRESS="*" - # image: postgres:13-alpine - # restart: unless-stopped - # ports: - # - "5434:5432" - # security_opt: - # - no-new-privileges:true - # pids_limit: 100 - # read_only: false - # tmpfs: - # - /tmp - # - /var/run/postgresql - # volumes: - # # - ./volumes/db-replica2/var/lib/postgresql/data:/var/lib/postgresql/data - # - ./volumes/db-replica2/data2:/var/lib/postgresql/data openldap: platform: linux/amd64 container_name: cs-repro-openldap @@ -98,7 +31,7 @@ services: restart: unless-stopped image: rroemhild/test-openldap:latest volumes: - - ./ldap:/ldap:rw + - ./ldap:/mattermost/config:rw ports: - "10389:10389" - "10636:10636" @@ -202,4 +135,72 @@ services: /usr/local/bin/docker-entrypoint.sh eswrapper" ports: - 9200:9200 - - 9300:9300 \ No newline at end of file + - 9300:9300 + # mysql: + # container_name: cs-repro-mysql + # image: mysql:8 + # restart: always + # environment: + # MYSQL_DATABASE: "mattermost" + # # So you don't have to use root, but you can if you like + # MYSQL_USER: "mmuser" + # # You can use whatever password you like + # MYSQL_PASSWORD: "mmuser_password" + # # Password for root access + # MYSQL_ROOT_PASSWORD: "mmuser_password" + # healthcheck: + # test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + # timeout: 20s + # retries: 10 + # ports: + # # : + # - "3306:3306" + # expose: + # # Opens port 3306 on the container + # - "3306" + # # Where our data will be persisted + # volumes: + # - ./volumes/db/mysql:/var/lib/mysql + + # postgres-replica: + # container_name: cs-repro-postgres-replica + # environment: + # - POSTGRES_USER=mmuser + # - POSTGRES_PASSWORD=mmuser_password + # # - POSTGRES_DB=mattermost + # - LISTEN_ADDRESS="*" + # image: postgres:13-alpine + # restart: unless-stopped + # ports: + # - "5433:5432" + # security_opt: + # - no-new-privileges:true + # pids_limit: 100 + # read_only: false + # tmpfs: + # - /tmp + # - /var/run/postgresql + # volumes: + # # - ./volumes/db-replica/var/lib/postgresql/data:/var/lib/postgresql/data + # - ./volumes/db-replica/data2:/var/lib/postgresql/data + # postgres-replica2: + # container_name: cs-repro-postgres-replica2 + # environment: + # - POSTGRES_USER=mmuser + # - POSTGRES_PASSWORD=mmuser_password + # # - POSTGRES_DB=mattermost + # - LISTEN_ADDRESS="*" + # image: postgres:13-alpine + # restart: unless-stopped + # ports: + # - "5434:5432" + # security_opt: + # - no-new-privileges:true + # pids_limit: 100 + # read_only: false + # tmpfs: + # - /tmp + # - /var/run/postgresql + # volumes: + # # - ./volumes/db-replica2/var/lib/postgresql/data:/var/lib/postgresql/data + # - ./volumes/db-replica2/data2:/var/lib/postgresql/data \ No newline at end of file