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 շղթայում, պատկերի կառուցման ժամանակ, արգումենտի արժեքը կարող է փոխանցվել --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
# Հետագա օգտագործում՝ հավելվածի կողմից