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