Sobes.tech
Middle+

CI-dən Docker-ə dinamik atributu necə keçirmək olar, məsələn, layihə identifikatoru, əgər mühit dəyişənlərindən istifadə olunmursa?

sobes.tech Süni İntellekt

AI-dan cavab

Qurilish argumentlari foydalanilishi mumkin.

# Standart qiymat bilan qurilish argumentini aniqlash uchun sintaksis
ARG PROJECT_ID=default
# COPY buyruğunda argumentdan foydalanish, masalan
COPY ./app_${PROJECT_ID}.jar /app/app.jar
# Yoki RUN buyruğida
RUN echo "Loyiha ID si ${PROJECT_ID}""

CI/CD pipeline-da, rasm qurishda, argument qiymatini --build-arg flagi yordamida o'tkazish mumkin:

# CI'da qurish buyruğı misoli
docker build --build-arg PROJECT_ID=$CI_PROJECT_ID -t my-image:${CI_COMMIT_SHORT_SHA} .

Bu yerda, $CI_PROJECT_ID loyiha identifikatorini o'z ichiga olgan CI o'zgaruvchisi.

Boshqa usul - qurish uchun o'zgaruvchilar bilan fayldan foydalanish, bu atrof-muhit o'zgaruvchilaridan foydalanishning variatsiyasidir:

# Dockerfile o'zgarmaydi
ARG PROJECT_ID=default
COPY ./app_${PROJECT_ID}.jar /app/app.jar

build-args.env fayli:

PROJECT_ID=my-specific-project

Fayl bilan qurish buyruği:

docker build --build-arg PROJECT_ID=$(cat build-args.env) -t my-image:${CI_COMMIT_SHORT_SHA} .

Yana bir variant - Dockerfile ichida RUN yordamida fayl yaratish:

ARG PROJECT_ID=default
# Loyihaning identifikatori bilan fayl yaratish
RUN echo "${PROJECT_ID}" > /app/project_id.txt
# Keyinchalik bu fayldan ilova foydalanadi