Configurable dev environment (#14869)
* Configurable dev environment * Add a bit of documentation * fixing gofmt * A bit more doc * Using variable * Adding license header * Moving LDAP_DATA variable to the default-config.mk file * Adding another docker-compose for the makefile to not brake anybody workflow * Moving dejavu to the config * Fixing docker-compose.makefile.yaml for dejavu * Adding keycloak support to the dev environment * Address PR review comments * Removing minio from default docker images * Changing the default version of mysql to the oldest supported (5.6) * Change the restart option to no for the dev environment * Fixing restart option * Reverting unneded changes * Restoring 5.7 to check if test passes * Going back to 5.6 mysql image * Fixing tests on mysql 5.6 * Skipping flaky test Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
6ad5ef2b43
Коммит
e980dd7bd3
60
build/docker-compose-generator/main.go
Обычный файл
60
build/docker-compose-generator/main.go
Обычный файл
@@ -0,0 +1,60 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
type DockerCompose struct {
|
||||
Version string `yaml:"version"`
|
||||
Services map[string]*Container `yaml:"services"`
|
||||
}
|
||||
|
||||
type Container struct {
|
||||
Command string `yaml:"command,omitempty"`
|
||||
Image string `yaml:"image,omitempty"`
|
||||
Network []string `yaml:"networks,omitempty"`
|
||||
DependsOn []string `yaml:"depends_on,omitempty"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
validServices := map[string]int{
|
||||
"mysql": 3306,
|
||||
"postgres": 5432,
|
||||
"minio": 9000,
|
||||
"inbucket": 10080,
|
||||
"openldap": 389,
|
||||
"elasticsearch": 9200,
|
||||
"dejavu": 1358,
|
||||
"keycloak": 8080,
|
||||
}
|
||||
command := []string{}
|
||||
for _, arg := range os.Args[1:] {
|
||||
port, ok := validServices[arg]
|
||||
if !ok {
|
||||
panic(fmt.Sprintf("Unknown service %s", arg))
|
||||
}
|
||||
command = append(command, fmt.Sprintf("%s:%d", arg, port))
|
||||
}
|
||||
|
||||
var dockerCompose DockerCompose
|
||||
dockerCompose.Version = "2.4"
|
||||
dockerCompose.Services = map[string]*Container{}
|
||||
dockerCompose.Services["start_dependencies"] = &Container{
|
||||
Image: "mattermost/mattermost-wait-for-dep:latest",
|
||||
Network: []string{"mm-test"},
|
||||
DependsOn: os.Args[1:],
|
||||
Command: strings.Join(command, " "),
|
||||
}
|
||||
resultData, err := yaml.Marshal(dockerCompose)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("Unable to serialize the docker-compose file: %s.", err.Error()))
|
||||
}
|
||||
fmt.Println(string(resultData))
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '2.4'
|
||||
services:
|
||||
mysql:
|
||||
image: "mysql:5.7"
|
||||
image: "mysql:5.6"
|
||||
restart: always
|
||||
networks:
|
||||
- mm-test
|
||||
@@ -60,3 +60,19 @@ services:
|
||||
http.cors.allow-credentials: "true"
|
||||
transport.host: "127.0.0.1"
|
||||
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
|
||||
dejavu:
|
||||
image: "appbaseio/dejavu:3.4.2"
|
||||
networks:
|
||||
- mm-test
|
||||
keycloak:
|
||||
image: "jboss/keycloak:10.0.2"
|
||||
restart: always
|
||||
environment:
|
||||
KEYCLOAK_USER: mmuser
|
||||
KEYCLOAK_PASSWORD: mostest
|
||||
DB_VENDOR: h2
|
||||
KEYCLOAK_IMPORT: /setup/realm.json
|
||||
networks:
|
||||
- mm-test
|
||||
volumes:
|
||||
- "./docker/keycloak:/setup"
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
version: '2.4'
|
||||
services:
|
||||
dejavu:
|
||||
image: "appbaseio/dejavu:3.4.2"
|
||||
networks:
|
||||
- mm-test
|
||||
@@ -28,6 +28,14 @@ services:
|
||||
extends:
|
||||
file: docker-compose.common.yml
|
||||
service: elasticsearch
|
||||
dejavu:
|
||||
extends:
|
||||
file: docker-compose.common.yml
|
||||
service: dejavu
|
||||
keycloak:
|
||||
extends:
|
||||
file: docker-compose.common.yml
|
||||
service: keycloak
|
||||
|
||||
start_dependencies:
|
||||
image: mattermost/mattermost-wait-for-dep:latest
|
||||
|
||||
58
build/docker/keycloak/README.md
Обычный файл
58
build/docker/keycloak/README.md
Обычный файл
@@ -0,0 +1,58 @@
|
||||
To use this keycloak image, we suggest you to use this configuration settings:
|
||||
|
||||
- Enable Login With SAML 2.0: `true`
|
||||
- Enable Synchronizing SAML Accounts With AD/LDAP: `true`
|
||||
- Override SAML bind data with AD/LDAP information: `false`
|
||||
- Identity Provider Metadata URL: empty string
|
||||
- SAML SSO URL: `http://localhost:8484/auth/realms/mattermost/protocol/saml`
|
||||
- Identity Provider Issuer URL: h`ttp://localhost:8065/login/sso/SAML`
|
||||
- Identity Provider Public Certificate: The file `keycloak_cert.pem` in this same directory
|
||||
- Verify Signature: `true`
|
||||
- Service Provider Login URL: `http://localhost:8065/login/sso/saml`
|
||||
- Enable Encryption: `false`
|
||||
- Sign Request: `false`
|
||||
- Email Attribute: `email`
|
||||
- Username Attribute: `username`
|
||||
- Id Attribute: `id`
|
||||
- First Name Attribute: `firstName`
|
||||
- Last Name Attribute: `lastName`
|
||||
|
||||
or overwrite your SamleSettings section with this settings in your config.json file (if you are not using
|
||||
database configuration) and restart the server:
|
||||
|
||||
```json
|
||||
"SamlSettings": {
|
||||
"Enable": true,
|
||||
"EnableSyncWithLdap": true,
|
||||
"EnableSyncWithLdapIncludeAuth": false,
|
||||
"Verify": true,
|
||||
"Encrypt": false,
|
||||
"SignRequest": false,
|
||||
"IdpUrl": "http://localhost:8484/auth/realms/mattermost/protocol/saml",
|
||||
"IdpDescriptorUrl": "http://localhost:8065/login/sso/saml",
|
||||
"IdpMetadataUrl": "",
|
||||
"AssertionConsumerServiceURL": "http://localhost:8065/login/sso/saml",
|
||||
"SignatureAlgorithm": "RSAwithSHA1",
|
||||
"CanonicalAlgorithm": "Canonical1.0",
|
||||
"ScopingIDPProviderId": "",
|
||||
"ScopingIDPName": "",
|
||||
"IdpCertificateFile": "saml-idp.crt",
|
||||
"PublicCertificateFile": "",
|
||||
"PrivateKeyFile": "",
|
||||
"IdAttribute": "id",
|
||||
"GuestAttribute": "",
|
||||
"EnableAdminAttribute": false,
|
||||
"AdminAttribute": "",
|
||||
"FirstNameAttribute": "firstName",
|
||||
"LastNameAttribute": "lastName",
|
||||
"EmailAttribute": "email",
|
||||
"UsernameAttribute": "username",
|
||||
"NicknameAttribute": "",
|
||||
"LocaleAttribute": "",
|
||||
"PositionAttribute": "",
|
||||
"LoginButtonText": "SAML",
|
||||
"LoginButtonColor": "#34a28b",
|
||||
"LoginButtonBorderColor": "#2389D7",
|
||||
"LoginButtonTextColor": "#ffffff"
|
||||
},
|
||||
```
|
||||
3
build/docker/keycloak/keycloak_cert.pem
Обычный файл
3
build/docker/keycloak/keycloak_cert.pem
Обычный файл
@@ -0,0 +1,3 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICmzCCAYMCBgFlZqKaDTANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMTgwODIzMTE1MjM2WhcNMjgwODIzMTE1NDE2WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWfMf7KfTiwF1cyBLDJXegQFgi9HqwKZaTA4GFhSBTcwQyNrv8hkv8q7h8Z6ZoVavhMqKnbcXHln8s3CEQ0/z1UrLL3dEfTH0UMkkAEjPxei0iw0CTakawjkxmbbTXiglnFWv63nrV+PE5srXmm8yymfL4gJMtL7SlfPpJ+YHUNdwhlovxUUmGvBk4M82T1Ht2Hy3DPYF21a2JN2PF7hKRa/vhcAWSNaRnSrj1vGJml7YsNdmh/MIdGaxT6Rdx7zkO+4VcooT4CuQ12aLyV5eKOD/558BANth2eWIsXWhh/VFB1Zq1+dYyKLyjvo5fs/itdw31M66s/H/WkRIrTn/TAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAJRpSNuBBmIELqIf7jF5I01mGiPMEkiqxENK1JH6iy8VOVljdM9tC1I1Dv6skx/0wCSX8cT32Dza0zJZN6Rvzt23DTh4yUWBosIOfmmL2uE7aeVVMm+jVzmynUVBTKfye3ki/ivBGJB8vsM1JuN/N4KE8WoH7iKMovETUb3cM44NfmMyhYyMWVrv02j3Pl6D4GadafawBPDQZGttotPo9kzYPpsQP6qYqtoZgSnX1BqOacPU+vKr8OIZM579hDkpDw0PvnCFvQeVlPseRTRv9ZwvbAksw6DwstJWp4eNd9nol8Apog+k0uzj+CGYXfWNWbz3LZ4/9BXhbwGxuYo4jUk=
|
||||
-----END CERTIFICATE-----
|
||||
1966
build/docker/keycloak/realm.json
Обычный файл
1966
build/docker/keycloak/realm.json
Обычный файл
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Ссылка в новой задаче
Block a user