Sobes.tech
Middle+

Kaip perduoti dinaminį CI atributą į Docker, pavyzdžiui, projekto identifikatorių, jei nevartojame aplinkos kintamųjų?

sobes.tech AI

Atsakymas iš AI

Gali būti naudojami statybos argumentai.

# Sintaksė statybos argumento apibrėžimui su numatytąja verte
ARG PROJECT_ID=default
# Argumento naudojimas kopijavimo instrukcijoje, pavyzdžiui
COPY ./app_${PROJECT_ID}.jar /app/app.jar
# Arba RUN instrukcijoje
RUN echo "Projekto ID yra ${PROJECT_ID}"

CI/CD pipeline'e, kuriant vaizdą, argumento reikšmė gali būti perduota naudojant --build-arg vėliavą:

# Pavyzdinė komanda CI kūrimui
docker build --build-arg PROJECT_ID=$CI_PROJECT_ID -t my-image:${CI_COMMIT_SHORT_SHA} .

Čia, $CI_PROJECT_ID yra CI kintamasis, kuris turi projekto identifikatorių.

Kitas būdas yra naudoti failą su kintamaisiais statybai, tai yra variacija aplinkos kintamųjų naudojimui:

# Dockerfile nesikeičia
ARG PROJECT_ID=default
COPY ./app_${PROJECT_ID}.jar /app/app.jar

build-args.env failas:

PROJECT_ID=my-specific-project

Komanda statybai su failu:

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

Kita galimybė yra generuoti failą Dockerfile viduje naudojant RUN:

ARG PROJECT_ID=default
# Generuoti failą su projekto identifikatoriumi
RUN echo "${PROJECT_ID}" > /app/project_id.txt
# Vėlesniam naudojimui šį failą aplikacija