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 变量的主要内容,如果未能解决你的问题,请参考以下文章

gitlab runner 权限问题

Gitlab runner docker无法解析主机

gitlab-runner的无权限问题

Docker安装Gitlab和Gitlab-Runner并实现项目CICD

为啥gitlab-runner执行完script停不下来?

用 Docker compose 实现 gitlab 和 gitlab runner