Middle+
Hogyan lehet átadni egy dinamikus attribútumot a CI-től a Dockernek az image építése során, például a projekt azonosítóját, ha nem használunk környezeti változókat?
sobes.tech MI
Válasz az MI-től
Build-argumentumokat lehet használni.
# Szintaxis az alapértelmezett értékkel rendelkező build-argumentum meghatározásához
ARG PROJECT_ID=default
# Az argumentum használata a COPY utasításban, például
COPY ./app_${PROJECT_ID}.jar /app/app.jar
# Vagy a RUN utasításban
RUN echo "A projekt azonosítója ${PROJECT_ID}"
A CI/CD csővezetékben, az image építésekor, az argumentum értékét át lehet adni a --build-arg zászlóval:
# Példa build parancs CI-ben
docker build --build-arg PROJECT_ID=$CI_PROJECT_ID -t my-image:${CI_COMMIT_SHORT_SHA} .
Itt, a $CI_PROJECT_ID egy CI változó, amely a projekt azonosítóját tartalmazza.
Egy másik módszer, hogy változókat tartalmazó fájlt használunk az építéshez, ami egy változata a környezeti változók használatának:
# A Dockerfile nem változik
ARG PROJECT_ID=default
COPY ./app_${PROJECT_ID}.jar /app/app.jar
build-args.env fájl:
PROJECT_ID=my-specific-project
A fájl használatával történő építés parancsa:
docker build --build-arg PROJECT_ID=$(cat build-args.env) -t my-image:${CI_COMMIT_SHORT_SHA} .
Egy másik lehetőség, hogy a Dockerfile belsejében generálunk egy fájlt a RUN segítségével:
ARG PROJECT_ID=default
# A projekt azonosítójával rendelkező fájl generálása
RUN echo "${PROJECT_ID}" > /app/project_id.txt
# Ezt a fájlt később az alkalmazás használja