Middle+
Kuidas edastada CI dünaamiline atribuut Dockerile pildi ehitamisel, näiteks projekti identifikaator, kui keskkonnamuutujaid ei kasutata?
sobes.tech AI
Vastus AI-lt
Võib kasutada ehitusargumente.
# Süntaks ehitusargumenti määratlemiseks vaikese väärtusega
ARG PROJECT_ID=default
# Argumenti kasutamine kopeerimiskäsus, näiteks
COPY ./app_${PROJECT_ID}.jar /app/app.jar
# Või RUN käsus
RUN echo "Projekti ID on ${PROJECT_ID}"
CI/CD torujuhtmes, pildi ehitamisel, saab argumenti väärtust edastada --build-arg lipuga:
# Näide CI ehituskäsklusest
docker build --build-arg PROJECT_ID=$CI_PROJECT_ID -t my-image:${CI_COMMIT_SHORT_SHA} .
Siin on $CI_PROJECT_ID CI-muutuja, mis sisaldab projekti identifikaatorit.
Teine võimalus on kasutada faili muutujaid ehitamiseks, mis on variatsioon keskkonnamuutujate kasutamisest:
# Dockerfile ei muutu
ARG PROJECT_ID=default
COPY ./app_${PROJECT_ID}.jar /app/app.jar
build-args.env fail:
PROJECT_ID=my-specific-project
Ehituskäsk failiga:
docker build --build-arg PROJECT_ID=$(cat build-args.env) -t my-image:${CI_COMMIT_SHORT_SHA} .
Teine võimalus on genereerida fail Dockerfile sees RUN abil:
ARG PROJECT_ID=default
# Projekti identifikaatoriga faili genereerimine
RUN echo "${PROJECT_ID}" > /app/project_id.txt
# Selle faili kasutamine rakenduse poolt