Il y a un peu plus d'un an, j'ai commencé à jouer avec Docker. Je fais maintenant tourner persque toutes mes applications serveurs dans des conteneurs : deux sites web Drupal, un forum phpBB, un serveur mandataire inverse, un serveur DNS, un serveur MineOS pour mon fils, etc. J'ai eu l'occasion d'avoir à gérer divers besoins : persistance des données, mise à jour de l'applicatif, architecture micro-services, dépendance des services, etc. Mais je me considèe encore comme un débutant naïf : les applications que j'ai dockerisées sont pour mon usage personnel seulement. Par conséquent, je n'ai jamais été exposé aux contraintes de la vraie vie (grand nombre de connexions, sécurité, haute disponibilité, etc.)
De temps en temps, des amis me demandent de les aider, dans mon domaine d'expertise[1], en résolvant des problèmes auxquels ils doivent faire face ou en développant rapidement des preuves de concepts. Les livrables sont du code source et parfois des schémas électroniques. Jusqu'à récemment, pour livrer ces éléments, j'utilisais le courriel et le transfert de fichiers. J'avais également un serveur privé de contrôle de version. Il y a quelques semaines, j'ai décidé de passer un peu de temps à vérifier si une instance dockerisée de GitLab ne pourrait pas être une bonne solution pour remplacer ma méthode archaïque actuelle de gestion et partage de code source et de schémas.
Après quelques tests, j'ai obtenu la réponse: oui ! Cet article décrit les quelques étapes que j'ai suivies pour installer ma configuration.
La documentation de référence détaillée est disponible. En la suivant :
$ sudo docker run --detach \
--hostname <hostName> \
--env VIRTUAL_HOST=<FQDN> \
--publish <publicPort>:80 \
--name gitlab \
--restart always \
--volume /var/www/runninggitlab/config:/etc/gitlab \
--volume /var/www/runninggitlab/logs:/var/log/gitlab \
--volume /var/www/runninggitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:8.2.1-ce.0
Quelques mots d'explications :
Maintenant que le conteneur est démarré :
external_url "http://<myGitLabURL>"
gitlab_rails['gitlab_email_from'] = '<fromEmail>'
gitlab_rails['gitlab_email_reply_to'] = '<replyToEmail>'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "<SMTPServerAddress>"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "<SMTPUserName>"
gitlab_rails['smtp_password'] = "<SMTPPassword>"
gitlab_rails['smtp_domain'] = "<SMTPDomain>"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
Pour sauvegarder les données GitLab, entrer dans le conteneur, et lancer la commande de sauvegarde :
$ sudo docker exec -it gitlab bash
# gitlab-rake gitlab:backup:create
Le fichier de sauvegarde est créé dans le répertoire /var/www/runninggitlab/data/backups/, sur le système hôte.
J'automatiserai bientôt la procédure de sauvegarde. Revenez voir...
Se référer à la documentation associée. Je l'ai suivie ce matin, sans aucun problème.
Voir cet article (en anglais uniquement).
[1] Depuis 25 ans, je développe des systèmes dans le domaine de ce qui est aujourd'hui appelé IoT ou M2M. Mon expertise principale concerne la conception et l'implémentation de la communication au niveau applicatif entre des objets connectés et une application centrale. Ceci comprend le développement logiciel embarqué sur cible sans système d'exploitation, la conception et l'implémentation de protocoles au niveau applicatif, l'interfaçage avec des modules de communicaiton divers, de l'électronique numérique, etc. La conception d'architecture système globale fait également partie de mon expertise.