GitLab: Comment construire des images Docker dans votre GitLab CI

Cette documentation fait partie du guide CI/CD. Consultez le guide complet ici : Comment utiliser GitLab CI/CD.

👋 Bienvenue dans la documentation Stackhero !

Stackhero offre une solution GitLab cloud clé en main, pensée pour les équipes qui ont besoin d’un environnement rapide, sécurisé et évolutif :

  • Utilisateurs, dépôts, transferts de données et temps de traitement CI/CD illimités pour une flexibilité maximale.
  • Mises à jour faciles en un seul clic, pour garder votre environnement à jour sans interruption.
  • Nom de domaine personnalisé sécurisé en HTTPS (par exemple, https://git.votre-entreprise.com) pour une image professionnelle et une sécurité accrue.
  • Performance constante et sécurité renforcée sur votre propre infrastructure privée et dédiée. Aucun voisin bruyant, isolation complète assurée.
  • Choix de l’emplacement d’hébergement : 🇪🇺 Europe ou 🇺🇸 USA selon vos exigences de conformité ou de latence.

Démarrez rapidement et concentrez-vous sur votre code. La solution GitLab cloud hosting de Stackhero est prête à l’emploi en environ 5 minutes.

Si votre dépôt de projet contient des fichiers Dockerfile, vous pouvez automatiser la construction, l'exécution et, si nécessaire, la publication de vos images Docker vers un registre.

Pour commencer, activez le support "Docker in Docker" (DinD) dans votre tableau de bord Stackhero.

Activer le support DinD présente un risque de sécurité, surtout si vous souhaitez isoler vos utilisateurs et éviter qu'ils puissent accéder aux projets des autres.

Ensuite, modifiez votre fichier gitlab-ci.yml pour inclure une configuration de pipeline qui construit votre Dockerfile en utilisant DinD. Voici un exemple de configuration :

image: docker:29

build:
  stage: build
  services:
    - name: docker:29-dind
      alias: docker
  variables:
    # Oriente le CLI Docker vers le service Docker-in-Docker, via son port
    # non sécurisé (non-TLS). Voir la note ci-dessous sur l'importance de DOCKER_HOST.
    DOCKER_HOST: "tcp://docker:2375"
    DOCKER_TLS_CERTDIR: ""
  before_script:
    - docker info
  script:
    # Remplacez "my-docker-image" par le nom de l'image désirée :
    - docker build -t my-docker-image .
    # Optionnellement, testez l'image Docker :
    # - docker run my-docker-image /script/to/run/tests

Le service docker:29-dind démarre un démon Docker à côté de votre job, et DOCKER_HOST indique au CLI docker de l'utiliser. Définissez toujours DOCKER_HOST lorsque vous déclarez un service docker:dind : si vous l'omettez, le CLI se connecte silencieusement à un autre démon, et votre build peut réussir même si le service est mal configuré, ce qui masque de vrais problèmes. DOCKER_TLS_CERTDIR: "" permet d'utiliser le port interne 2375 non sécurisé du réseau du job.

En alternative plus simple, vous pouvez supprimer complètement le bloc services et les deux variables : le runner Stackhero expose déjà un démon Docker prêt à l'emploi via un socket monté, donc une simple commande docker build fonctionne immédiatement.

Pour plus d'informations sur la construction d'images Docker avec GitLab CI, consultez la documentation officielle de GitLab.