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í