Middle+
CI dan dinamik atributni Docker ga qanday o'tkazish mumkin, masalan, loyiha identifikatori, agar muhit o'zgaruvchilardan foydalanilmasa?
sobes.tech AI
AIdan javob
Qurilish argumentlaridan foydalanish mumkin.
# Standart qiymat bilan qurilish argumentini aniqlash uchun sintaksis
ARG PROJECT_ID=default
# COPY buyruğida 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