GitLab Runner: Een Docker-image bouwen met Docker-in-Docker
Deze documentatie maakt deel uit van de Docker-images bouwen-gids. Bekijk de volledige gids hier: Bouw en push Docker-images efficiënt vanuit uw GitLab CI/CD-pipelines met Stackhero runners en Docker-in-Docker.
👋 Welkom bij de Stackhero-documentatie!
Stackhero biedt een eenvoudige GitLab Runner cloud oplossing waarmee u uw GitLab CI/CD-jobs efficiënt en zonder gedoe kunt uitvoeren. Dit kunt u verwachten:
- Onbeperkte CI/CD-minuten: voer uw pijplijnen zo vaak uit als nodig, zonder kosten per minuut of onverwachte extra kosten.
- Meerdere gelijktijdige jobs: versnel uw ontwikkeling door verschillende jobs parallel uit te voeren.
- De Docker executor met ondersteuning voor Docker-in-Docker: bouw en push eenvoudig container images als onderdeel van uw CI/CD-proces.
- Werkt naadloos met zowel GitLab.com als self-managed GitLab-omgevingen.
- Een privé, dedicated infrastructuur met snelle NVMe/SSD-opslag zorgt voor stabiele en voorspelbare build-prestaties.
- Beschikbaar in de regio's 🇪🇺 Europa en 🇺🇸 USA om aan de behoeften van uw team te voldoen.
Bespaar tijd: u kunt uw eerste GitLab Runner koppelen en binnen enkele minuten starten met het uitvoeren van pijplijnen!
U kunt het volgende voorbeeld van .gitlab-ci.yml toevoegen aan uw repository. Deze configuratie bouwt de Dockerfile in de root van uw project:
build-image:
stage: build
image: docker:29
services:
- name: docker:29-dind
alias: docker
variables:
DOCKER_HOST: "tcp://docker:2375"
DOCKER_TLS_CERTDIR: ""
before_script:
- docker info
script:
# Vervang "my-image" door de gewenste naam:
- docker build -t my-image .
# Optioneel: voer een snelle test uit op het gebouwde image:
# - docker run --rm my-image /path/to/tests
In dit voorbeeld gebruiken we Docker-image versie 29. U kunt een nieuwere versie gebruiken zodra deze beschikbaar is. De laatste tags vindt u op de officiële Docker image pagina.
In deze setup start de docker:29-dind service een Docker-daemon naast uw job, en DOCKER_HOST: "tcp://docker:2375" vertelt de docker CLI om deze te gebruiken. Stel altijd DOCKER_HOST in wanneer u een docker:dind service gebruikt: zonder deze variabele maakt de CLI stilzwijgend verbinding met een andere daemon, waardoor uw build kan slagen zelfs als de service verkeerd is geconfigureerd. Dit verbergt echte problemen (en breekt tools zoals Testcontainers die afhankelijk zijn van de service). DOCKER_TLS_CERTDIR: "" zorgt ervoor dat er verbinding wordt gemaakt via de niet-versleutelde poort 2375 op het interne jobnetwerk.
Als eenvoudiger alternatief kunt u het services-blok en beide variabelen weglaten: de Stackhero runner biedt ook een kant-en-klare Docker-daemon via een gemounte socket, zodat een eenvoudige docker build werkt zonder extra configuratie.