Ich möchte Gitlab-Variablen in .env.Production in einer VueJS-Anwendung laden, damit ich Process.env.VUE_APP_VARIABLE_NAME verwenden kann.
Was ich getan habe:
VUE_APP_EMAILJS_USER_ID=* VUE_APP_EMAILJS_SERVICE_ID=* VUE_APP_EMAILJS_TEMPLATE_ID=* VUE_APP_FIREBASE_API_KEY=* VUE_APP_FIREBASE_AUTH_DOMAIN=* VUE_APP_FIREBASE_PROJECT_ID=* VUE_APP_FIREBASE_STORAGE_BUCKET=* VUE_APP_FIREBASE_MESSAGING_SENDER_ID=* VUE_APP_FIREBASE_APP_ID=* VUE_APP_FIREBASE_MEASUREMENT_ID=*
build-docker-image: stage: build before_script: # $CI_JOB_TOKEN is variable automatically added by Gitlab: see https://docs.gitlab.com/ee/ci/variables/predefined_variables.html#variables-reference - echo $CI_JOB_TOKEN | docker login -u gitlab-ci-token registry.gitlab.com --password-stdin script: # build and push docker image to gitlab registry - docker pull $GITLAB_IMAGE || true # Allows us to use --cache-from - docker build --build-arg VUE_APP_EMAILJS_USER_ID=$VUE_APP_EMAILJS_USER_ID --build-arg VUE_APP_EMAILJS_SERVICE_ID=$VUE_APP_EMAILJS_SERVICE_ID --build-arg VUE_APP_EMAILJS_TEMPLATE_ID=$VUE_APP_EMAILJS_TEMPLATE_ID --build-arg VUE_APP_FIREBASE_API_KEY=$VUE_APP_FIREBASE_API_KEY --build-arg VUE_APP_FIREBASE_AUTH_DOMAIN=$VUE_APP_FIREBASE_AUTH_DOMAIN --build-arg VUE_APP_FIREBASE_PROJECT_ID=$VUE_APP_FIREBASE_PROJECT_ID --build-arg VUE_APP_FIREBASE_STORAGE_BUCKET=$VUE_APP_FIREBASE_STORAGE_BUCKET --build-arg VUE_APP_FIREBASE_MESSAGING_SENDER_ID=$VUE_APP_FIREBASE_MESSAGING_SENDER_ID --build-arg VUE_APP_FIREBASE_APP_ID=$VUE_APP_FIREBASE_APP_ID --build-arg VUE_APP_FIREBASE_MEASUREMENT_ID=$VUE_APP_FIREBASE_MEASUREMENT_ID --cache-from $GITLAB_IMAGE -t $GITLAB_IMAGE:$CI_COMMIT_SHA . - docker push $GITLAB_IMAGE:$CI_COMMIT_SHA
FROM node:14.18 as build-stage WORKDIR /app COPY package*.json ./ COPY yarn.lock ./ RUN yarn install COPY . . # pass Docker varibales to VueJS environment varibales ARG VUE_APP_EMAILJS_USER_ID ENV VUE_APP_EMAILJS_USER_ID $VUE_APP_EMAILJS_USER_ID ARG VUE_APP_EMAILJS_SERVICE_ID ENV VUE_APP_EMAILJS_SERVICE_ID $VUE_APP_EMAILJS_SERVICE_ID ARG VUE_APP_EMAILJS_TEMPLATE_ID ENV VUE_APP_EMAILJS_TEMPLATE_ID $VUE_APP_EMAILJS_TEMPLATE_ID ARG VUE_APP_FIREBASE_API_KEY ENV VUE_APP_FIREBASE_API_KEY $VUE_APP_FIREBASE_API_KEY ARG VUE_APP_FIREBASE_AUTH_DOMAIN ENV VUE_APP_FIREBASE_AUTH_DOMAIN $VUE_APP_FIREBASE_AUTH_DOMAIN ARG VUE_APP_FIREBASE_PROJECT_ID ENV VUE_APP_FIREBASE_PROJECT_ID $VUE_APP_FIREBASE_PROJECT_ID ARG VUE_APP_FIREBASE_STORAGE_BUCKET ENV VUE_APP_FIREBASE_STORAGE_BUCKET $VUE_APP_FIREBASE_STORAGE_BUCKET ARG VUE_APP_FIREBASE_MESSAGING_SENDER_ID ENV VUE_APP_FIREBASE_MESSAGING_SENDER_ID $VUE_APP_FIREBASE_MESSAGING_SENDER_ID ARG VUE_APP_FIREBASE_APP_ID ENV VUE_APP_FIREBASE_APP_ID $VUE_APP_FIREBASE_APP_ID ARG VUE_APP_FIREBASE_MEASUREMENT_ID ENV VUE_APP_FIREBASE_MEASUREMENT_ID $VUE_APP_FIREBASE_MEASUREMENT_ID # build the application RUN yarn build FROM nginx:1.19 as production-stage RUN mkdir /app COPY --from=build-stage /app/dist /app COPY nginx.conf /etc/nginx/nginx.conf
Aber ich erhalte für alle Variablen nur Nullwerte
Weiß jemand, was an meiner Lösung falsch ist? Oder haben Sie eine andere Lösung, um das zu erreichen, was ich tun möchte?
我认为你做得很好,但忘记在 Dockerfile 上传递 ENV 我有相同的配置,但使用
=
符号传递它们,例如:要分离开发和生产环境,您可以在 Gitlab CI/CD env 和 .gitlab-ci.yml 文件上的环境名称前添加 DEV_ 和 MAIN_,像: