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
# Накнадна употреба овог фајла од стране апликације