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