GitLab Runner: Docker atvaizdžio kūrimas su Docker-in-Docker

Ši dokumentacija yra Docker atvaizdžių kūrimas vadovo dalis. Visą vadovą rasite čia: Efektyviai kurkite ir įkelkite Docker atvaizdžius iš savo GitLab CI/CD procesų naudodami Stackhero runner'ius ir Docker-in-Docker.

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paprastą GitLab Runner cloud sprendimą, kuris leidžia efektyviai ir be rūpesčių vykdyti jūsų GitLab CI/CD užduotis. Štai ko galite tikėtis:

  • Neribotos CI/CD minutės: vykdykite savo pipelines tiek kartų, kiek reikia, be apmokestinimo už minutes ar netikėtų mokesčių.
  • Keli vienu metu vykdomi darbai: spartinkite kūrimo procesą paleisdami kelias užduotis lygiagrečiai.
  • Docker executor su Docker-in-Docker palaikymu: lengvai kurkite ir talpinkite konteinerių atvaizdus kaip CI/CD proceso dalį.
  • Puikiai veikia tiek su GitLab.com, tiek su self-managed GitLab instancijomis.
  • Privati, dedikuota infrastruktūra su greitu NVMe/SSD saugojimu užtikrina stabilų ir nuspėjamą build našumą.
  • Pasiekiama 🇪🇺 Europoje ir 🇺🇸 JAV regionuose, kad atitiktų jūsų komandos poreikius.

Taupykite laiką: galite prijungti savo pirmąjį GitLab Runner ir pradėti vykdyti pipelines vos per kelias minutes!

Į savo repozitoriją galite pridėti šį .gitlab-ci.yml pavyzdį. Ši konfigūracija kuria Dockerfile, esantį jūsų projekto šaknyje:

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:
    # Pakeiskite "my-image" norimu pavadinimu:
    - docker build -t my-image .
    # Papildomai, galite greitai patikrinti sukurtą atvaizdį:
    # - docker run --rm my-image /path/to/tests

Šiame pavyzdyje naudojame Docker atvaizdžio 29 versiją. Galite naudoti naujesnę versiją, kai tik ji pasirodo. Naujausius žymenis rasite oficialiame Docker atvaizdžių puslapyje.

Šioje konfigūracijoje docker:29-dind servisas paleidžia Docker daemon'ą šalia jūsų darbo, o DOCKER_HOST: "tcp://docker:2375" nurodo docker CLI naudoti būtent jį. Visada nustatykite DOCKER_HOST, kai deklaruojate docker:dind servisą: priešingu atveju CLI tyliai prisijungs prie kito daemon'o, todėl build'as gali praeiti net jei servisas sukonfigūruotas neteisingai, kas paslepia tikras problemas (ir sugadina tokius įrankius kaip Testcontainers, kurie priklauso nuo šio serviso). DOCKER_TLS_CERTDIR: "" leidžia jungtis per paprastą, nešifruotą 2375 prievadą vidiniame darbo tinkle.

Kaip paprastesnę alternatyvą, galite praleisti services bloką ir abi kintamąsias: Stackhero runner'is taip pat pateikia paruoštą naudoti Docker daemon'ą per prijungtą socket'ą, todėl paprastas docker build veikia be papildomos konfigūracijos.