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