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