Sobes.tech
Middle+

CI-ден Dockerга динамикалык мүнөздөмө кантип өткөрүлөт, мисалы, долбоордун идентификатору, эгерде чөйрө өзгөрмөлөрүн колдонбосо?

sobes.tech AI

AIден жооп

Курулуш аргументтерин колдонууга болот.

# Дефолт мааниси менен курулуш аргументин аныктоо үчүн синтаксис
ARG PROJECT_ID=default
# Мисалы, COPY буйругунда аргументти колдонуу
COPY ./app_${PROJECT_ID}.jar /app/app.jar
# же RUN буйругунда
RUN echo "Проекттин IDси ${PROJECT_ID}""

CI/CD pipeline'инде, сүрөттү куруу учурунда, аргументтин маанисин --build-arg флагы аркылуу өткөрүүгө болот:

# CI'де куруу командасынын мисалы
docker build --build-arg PROJECT_ID=$CI_PROJECT_ID -t my-image:${CI_COMMIT_SHORT_SHA} .

Бул жерде, $CI_PROJECT_ID — долбоордун идентификаторун камтыган CI өзгөрмөсү.

Башка ыкма — куруу үчүн айлана-чөйрө өзгөрмөлөрүн колдонуу, бул айлана-чөйрө өзгөрмөлөрүн колдонуу вариациясы:

# Dockerfile өзгөртүлбөйт
ARG PROJECT_ID=default
COPY ./app_${PROJECT_ID}.jar /app/app.jar

build-args.env файлы:

PROJECT_ID=my-specific-project

Файл менен куруу командасы:

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

Башка бир вариант — Dockerfile ичинде RUN аркылуу файл түзүү:

ARG PROJECT_ID=default
# Проекттин идентификатору менен файл түзүү
RUN echo "${PROJECT_ID}" > /app/project_id.txt
# Андан ары бул файлды колдонуу