• Home  / 
  • Docker
  •  /  Un docker Gitlab clés en main

Un docker Gitlab clés en main

By KrustyHack / a couple of years ago

Docker, Docker-Compose et Gitlab pour un Docker GitLab en quelques minutes

Comme écrit dans un autre article, « Docker est un système de packaging d’applications. Léger, portable, rapide et distribuable il permet de placer dans un environnement un ensemble d’applications et de les utiliser ensuite sur différentes plateformes, serveurs, … ».

Docker Compose est un exécutable qui permet de gérer des groupes de containers Docker. Il permet en quelques minutes d’instancier un ensemble de containers liés les uns aux autres sans à se casser la tête. Il va nous permettre de paramétrer et d’instancier notre Docker GitLab comme il faut.

Gitlab est une plateforme de gestion de code similaire à Github. Cela permet de versionner ses applications et de travailler à plusieurs. L’avantage par rapport à GitHub c’est que vous gérez vraiment tout à votre guise. Et en plus c’est gratuit !

Installation

Ici, deux éléments à installer: Docker et Docker-Compose.

╭─root@krustyhack ~ 
╰─➤ curl -L https://get.docker.io |sh

╭─root@krustyhack ~ 
╰─➤ curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

╭─root@krustyhack ~ 
╰─➤ chmod +x /usr/local/bin/docker-compose

Je me base sur Ubuntu pour les installations. Donc pour d’autres plateformes, allez voir les docs: Install docker et Install docker-compose.

Récupération du projet docker-compose Gitlab

Un projet Docker Compose fonctionne avec un fichier de configuration en général nommé docker-compose.yml qui décrit chaque container de l’application. Vous pouvez utiliser un autre nom pour votre fichier mais il vous faudra le spécifier lors de l’utilisation de la commande docker-compose avec l’option -f.

Ci-dessous, le docker-compose.yml pour notre projet Docker Gitlab:

postgresql:
  image: sameersbn/postgresql:9.4
  environment:
    - DB_USER=gitlab
    - DB_PASS=mydbpassword
    - DB_NAME=gitlabhq_production
  volumes:
    - /root/docker/gitlab/postgresql:/var/lib/postgresql
redis:
  image: sameersbn/redis:latest
  volumes:
    - /root/docker/gitlab/redis:/var/lib/redis
gitlab:
  image: sameersbn/gitlab:7.10.0
  ports:
    - "0.0.0.0:4430:443"
    - "0.0.0.0:10022:22"
  environment:
    - GITLAB_BACKUPS=daily
    - GITLAB_HOST=gitlab.myhost.com
    - VIRTUAL_HOST=gitlab.myhost.com
    - MAX_UPLOAD_SIZE=512m
    - GITLAB_HTTPS=true
    - GITLAB_SSH_PORT=10022
    - SSL_CERTIFICATE_PATH=/home/git/data/certs/gitlab.crt
    - SSL_KEY_PATH=/home/git/data/certs/gitlab.key
    - SSL_DHPARAM_PATH=/home/git/data/certs/dhparam.pem
    - SSL_SELF_SIGNED=true
    - GITLAB_PORT=443
    - SMTP_ENABLED=true
    - SMTP_USER=mygmail@gmail.com
    - SMTP_PASS=mygmailpassword
    - DB_USER=gitlab
    - DB_PASS=mydbpassword
    - DB_NAME=gitlabhq_production
  volumes:
    - /home/docker/gitlab/data:/home/git/data
  links:
   - redis:redisio
   - postgresql:postgresql

Alors je ne vais pas expliquer toutes les variables d’environnement des containers mais celle-ci sont décrites sur https://github.com/sameersbn/docker-gitlab. La doc est complète et simple à comprendre.

Alors attention car moi, comme vous avez pu voir, j’utilise un certificat autosigné. Son installation est très simple et est décrite sur cette page: https://github.com/sameersbn/docker-gitlab#ssl.

Bien sûr, il est tout à fait possible d’utiliser votre Docker GitLab sans certificat SSL.

Comme vous pouvez également constater, je monte un volume sur mon host afin de stocker de façon durable les repos et les données Gitlab. N’oubliez pas de faire un backup quotidien pour être tranquille.

Et enfin, l’élément « links » du container Gitlab qui dit à docker-compose que le container est lié aux containers redis et postgresql. De ce fait, le container Gitlab peut communiquer avec eux.

Lancement

N’oubliez pas de vous placer dans le dossier du `docker-compose.yml` ou alors de spécifier le fichier avec l’option `-f` si vous avez utilisé un autre nom de fichier pour votre procédure Docker Compose.

Pour lancer tout le stack, rien de plus simple:

  • On pull nos images: `docker-compose pull`
  • On lance nos containers: `docker-compose up` (Si vous voulez lancer les containers en background, ajoutez l’option « -d »)

Et hop, le résultat:

╭─root@krustyhack ~  
╰─➤  docker ps
CONTAINER ID        IMAGE                      COMMAND                CREATED             STATUS              PORTS                                                    NAMES
ea73457d68db        sameersbn/gitlab:7.10.0    "/app/init app:start   2 seconds ago         Up 2 seconds           80/tcp, 0.0.0.0:4430->443/tcp, 0.0.0.0:10022->22/tcp   gitlab_gitlab_1       
19d06f1ec8d2        sameersbn/redis:latest     "/start"               2 seconds ago         Up 2 seconds           6379/tcp                                                 gitlab_redis_1        
4fe7dcc4d65c        sameersbn/postgresql:9.4   "/start"               2 seconds ago         Up 2 seconds           5432/tcp                                                 gitlab_postgresql_1

 

Nos 3 containers sont démarrés et tournent. Une petite visite sur https://monserveur:4430 et notre GitLab se dévoile ! Il vous faudra maintenant le paramétrer correctement (droits utilisateurs, bloquer les inscriptions, …). Cela devrait donner ceci au final:

docker gitlab installé

Résultat du Docker GitLab installé

Mettre à jour le Docker GitLab

Lors d’une montée en version, assurez-vous d’avoir bien sauvegardé tous vos composants puis changez la version GitLab dans le docker-compose.yml: image: sameersbn/gitlab:7.10.0.
Ensuite, un petit docker-compose pull && docker-compose stop && docker-compose rm && docker-compose up -d et le tour est joué.

Bon je le fais « à la barbare », le mieux étant de stopper le 1er stack, d’en créer un 2ème, de vérifier que l’upgrade est ok et si tout est bon de basculer sur le stack mis à jour.

Leave a comment: