Sobes.tech
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