Gitlab Runner 和 docker/docker-compose 传递存储的 gitlab 变量
Posted
技术标签:
【中文标题】Gitlab Runner 和 docker/docker-compose 传递存储的 gitlab 变量【英文标题】:Gitlab Runner and docker/docker-compose passing stored gitlab variables 【发布时间】:2021-08-21 11:28:06 【问题描述】:我在我的 Gitlab 项目中存储了变量 我想传递这个变量,所以当我构建 nuxtjs 应用程序时,所有变量都应该可用,如 Google API 密钥 Firebase 凭据
这些是我的文件:
Dockerfile
FROM node:12.13.0-alpine
RUN mkdir -p /usr/src/project-name
WORKDIR /usr/src/project-name
RUN apk update && apk upgrade
RUN apk add git
COPY . /usr/src/project-name/
RUN npm install
RUN npm run build
EXPOSE 3000
ENV NUXT_HOST=0.0.0.0
ENV PORT=3000
CMD [ "npm", "start" ]
Docker-compose
version: "3.8"
services:
nuxt:
build: .
ports:
- "3000:3000"
.gitlab-ci.yml
stages:
- deploy
deployFrontend:
stage: deploy
only:
- deploy
tags:
- deploy
script:
- sudo docker-compose -f docker-compose.yml build --no-cache
- sudo docker-compose -f docker-compose.yml up -d
when: manual
【问题讨论】:
因为这些是环境变量,你只需要关注这个doc。 【参考方案1】:您应该将 Vars 传递给 .gitlab-ci.yml 中的 Docker 构建 并在 Dockerfile 中捕获它们:
(例如,我从您的列表中取出两个变量)
Dockerfile
FROM node:12.13.0-alpine
ARG FIREBASE_API_KEY
ENV FIREBASE_API_KEY=$FIREBASE_API_KEY
ARG FIREBASE_API_ID
ENV FIREBASE_API_ID=$FIREBASE_API_ID
...
...
CMD [ "npm", "start" ]
.gitlab-ci.yml
- sudo export FIREBASE_API_KEY=$FIREBASE_API_KEY
- sudo export FIREBASE_API_ID=$FIREBASE_API_ID
- sudo docker build --build-arg FIREBASE_API_KEY --build-arg FIREBASE_API_ID -t NAME_OF_IMAGE -f path_to_Dockerfile .
- sudo docker-compose -f docker-compose.yml up -d
# in docker-compose.yml use NAME_OF_IMAGE you built above
【讨论】:
以上是关于Gitlab Runner 和 docker/docker-compose 传递存储的 gitlab 变量的主要内容,如果未能解决你的问题,请参考以下文章