Sobes.tech
Middle+

Jak lze předat dynamický atribut z CI do Dockeru při sestavování obrazu, například identifikátor projektu, pokud nepoužíváme proměnné prostředí?

sobes.tech AI

Odpověď od AI

Lze použít argumenty sestavení.

# Syntaxe pro definici argumentu sestavení s výchozí hodnotou
ARG PROJECT_ID=default
# Použití argumentu v instrukci COPY, například
COPY ./app_${PROJECT_ID}.jar /app/app.jar
# Nebo v instrukci RUN
RUN echo "ID projektu je ${PROJECT_ID}"

V CI/CD pipeline při sestavování obrazu lze hodnotu argumentu předat pomocí přepínače --build-arg:

# Příklad příkazu sestavení v CI
docker build --build-arg PROJECT_ID=$CI_PROJECT_ID -t my-image:${CI_COMMIT_SHORT_SHA} .

Zde $CI_PROJECT_ID je proměnná CI obsahující identifikátor projektu.

Další možností je použití souboru s proměnnými pro sestavení, což je variace použití proměnných prostředí:

# Dockerfile se nemění
ARG PROJECT_ID=default
COPY ./app_${PROJECT_ID}.jar /app/app.jar

Soubor build-args.env:

PROJECT_ID=my-specific-project

Příkaz sestavení se souborem:

docker build --build-arg PROJECT_ID=$(cat build-args.env) -t my-image:${CI_COMMIT_SHORT_SHA} .

Další možností je generování souboru uvnitř Dockerfile pomocí RUN:

ARG PROJECT_ID=default
# Generování souboru s identifikátorem projektu
RUN echo "${PROJECT_ID}" > /app/project_id.txt
# Další použití tohoto souboru aplikací