GitLab: Kaip kurti Docker atvaizdus su GitLab CI
Ši dokumentacija yra CI/CD vadovo dalis. Visą vadovą rasite čia: Kaip naudoti GitLab CI/CD.
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti GitLab cloud sprendimą, sukurtą komandoms, kurioms reikalinga greita, saugi ir lengvai plečiama aplinka:
- Neribotas naudotojų, saugyklų, duomenų perdavimų ir CI/CD apdorojimo laikas – visiška lankstumo laisvė.
- Paprasti atnaujinimai vienu paspaudimu – jūsų aplinka visada bus naujausia be prastovų.
- Individualus domeno vardas su HTTPS apsauga (pavyzdžiui, https://git.jusu-imone.lt) – profesionaliam įvaizdžiui ir saugumui.
- Nuoseklus veikimas ir aukštas saugumo lygis jūsų privačioje, dedikuotoje infrastruktūroje. Jokio triukšmingų kaimynų poveikio, visiška izoliacija.
- Galimybė pasirinkti talpinimo vietą: 🇪🇺 Europa arba 🇺🇸 USA pagal jūsų atitikties ar vėlinimo poreikius.
Pradėkite greitai ir susitelkite į savo kodą. Stackhero GitLab cloud hosting sprendimas paruoštas naudoti maždaug per 5 minutes.
Jei jūsų projekto repozitorijoje yra Dockerfile failų, galite automatizuoti Docker atvaizdų kūrimą, paleidimą ir, jei reikia, publikavimą į registrą.
1 žingsnis: Įjunkite Docker in Docker (DinD) palaikymą
Pirmiausia Stackhero valdymo skydelyje įjunkite "Docker in Docker" (DinD) palaikymą.

DinD palaikymo įjungimas kelia saugumo riziką, ypač jei norite izoliuoti naudotojus ir neleisti jiems pasiekti vieni kitų projektų.
2 žingsnis: Konfigūruokite GitLab CI pipeline
Toliau atnaujinkite savo gitlab-ci.yml failą, kad įtrauktumėte pipeline konfigūraciją, kuri naudoja DinD jūsų Dockerfile kūrimui. Žemiau pateiktas pavyzdinis konfigūracijos variantas:
image: docker:29
build:
stage: build
services:
- name: docker:29-dind
alias: docker
variables:
# Nukreipia docker CLI į Docker-in-Docker servisą per jo paprastą
# (ne-TLS) prievadą. Žr. žemiau esančią pastabą, kodėl svarbus DOCKER_HOST.
DOCKER_HOST: "tcp://docker:2375"
DOCKER_TLS_CERTDIR: ""
before_script:
- docker info
script:
# Pakeiskite "my-docker-image" į norimą atvaizdo pavadinimą:
- docker build -t my-docker-image .
# Papildomai, galite patikrinti Docker atvaizdą:
# - docker run my-docker-image /script/to/run/tests
docker:29-dind servisas paleidžia Docker daemon'ą šalia jūsų darbo, o DOCKER_HOST nurodo docker CLI naudoti būtent jį. Visada nustatykite DOCKER_HOST, kai deklaruojate docker:dind servisą: jei to nepadarysite, CLI tyliai prisijungs prie kito daemon'o, ir jūsų build'as gali pavykti net jei servisas sukonfigūruotas neteisingai, taip paslepiant tikrąsias problemas. DOCKER_TLS_CERTDIR: "" leidžia naudoti paprastą, nešifruotą 2375 prievadą vidiniame darbo tinkle.
Kaip paprastesnę alternatyvą, galite visiškai pašalinti services bloką ir abi kintamąsias: Stackhero runner'is jau pateikia paruoštą naudoti Docker daemon'ą per prijungtą socket'ą, tad paprasta docker build komanda veikia iš karto.
Daugiau informacijos apie Docker atvaizdų kūrimą su GitLab CI rasite oficialioje GitLab dokumentacijoje.