[Docker] docker compose exemple avec gerrit/ldap/postgres

mardi 6 novembre 2018

L’outil docker compose permet de faciliter la gestion de tous les paramètres à spécifié pour lancer un container et permet aussi de lancer plusieurs containers en même temps avec toutes leurs dépendances.

Pour installer docker-compose cliquer ici.

Pour cela, il suffit de créer un fichier docker-compose.yaml

On peut aussi définir un fichier .env à coté de notre fichier de configuration docker-compose qui contiendra les variables d’environnement pour notre fichier docker-compose.yaml.

Très utilise pour changer les paths entre chaque environnement

Voici un exemple pour installer gerrit avec ldap et postgres

Etape 1: On créé le fichier .env avec nos variables d’environnements (postgress user / db / pwd + externalpath + ldap-admin)

Etape 2: On créé notre fichier docker-compose.yaml comme ceci:

version: '3'

services:
  gerrit:
    image: gerritcodereview/gerrit
    ports:
      - "29418:29418"
      - "80:8080"
    links:
      - postgres
    depends_on:
      - postgres
      - ldap
    volumes:
     - /external/gerrit/etc:/var/gerrit/etc
     - /external/gerrit/git:/var/gerrit/git
     - /external/gerrit/index:/var/gerrit/index
     - /external/gerrit/cache:/var/gerrit/cache
#    entrypoint: java -jar /var/gerrit/bin/gerrit.war init -d /var/gerrit
  postgres:
    image: postgres:9.6
    environment:
      - POSTGRES_USER=gerrit
      - POSTGRES_PASSWORD=secret
      - POSTGRES_DB=reviewdb
    volumes:
      - /external/gerrit/postgres:/var/lib/postgresql/data
  ldap:
    image: osixia/openldap
    ports:
      - "389:389"
      - "636:636"
    environment:
      - LDAP_ADMIN_PASSWORD=secret
    volumes:
      - /external/gerrit/ldap/var:/var/lib/ldap
      - /external/gerrit/ldap/etc:/etc/ldap/slapd.d
  ldap-admin:
    image: osixia/phpldapadmin
    ports:
      - "6443:443"
    environment:
      - PHPLDAPADMIN_LDAP_HOSTS=ldap

Attention le paramètre links est super important car il permet aux containers de communiquer entre eux !
On utilise donc pas d’adresse ip ou de localhost dans les fichiers de configuration mais bien le hostname défini dans links.
Et pour tester cela on sait faire un ping du host dans le container !

Etape 3:On créé le fichier de config gerrit /external/gerrit/etc/gerrit.config

[gerrit]
  basePath = git
  canonicalWebUrl = http://localhost

[database]
  type = postgresql
  hostname = postgres
  database = reviewdb
  username = gerrit

[index]
  type = LUCENE

[auth]
  type = ldap
  gitBasicAuth = true

[ldap]
  server = ldap://ldap
  username=cn=admin,dc=example,dc=org
  accountBase = dc=example,dc=org
  accountPattern = (&(objectClass=person)(uid=${username}))
  accountFullName = displayName
  accountEmailAddress = mail

[sendemail]
  smtpServer = localhost

[sshd]
  listenAddress = *:29418

[httpd]
  listenUrl = http://*:8080/

[cache]
  directory = cache

[container]
  user = root

Etape 4: on créé le fichier /external/gerrit/etc/secure.config avec les mot de passe

[database]
  password = secret

[ldap]
  password = secret

Etape 5:Maintenant dans notre dossier projet on lance

docker-compose up -d postgres

qui va créé notre db review pour notre projet.

Etape 6: on vérifie dans les logs que tout est ok

docker-compose logs -f postgres

Etape 7: on lance gerrit en décomentant la ligne entrypoint: java -jar /var/gerrit/bin/gerrit.war init -d /var/gerrit du fichier docker-compose.yaml

docker-compose up gerrit

qui va créer tous les fichiers nécessaires pour initialiser gerrit en tenant compte du fichier de configuration de gerrit

Etape 8: Maintenant on peut lancer gerrit en demon si tout va bien

docker-compose up -d

Et accès via localhost:8080

Etape 9: Il reste à configurer le ldap avec le ldapmin.

Tags: Docker , docker-compose , gerrit , ldap , postgres