秘密未应用于 docker/build-push-action

问题描述 投票:0回答:2

我尝试根据此链接验证秘密是否正确应用,但与我的预期相反,它不起作用。

这里有一个和我类似的问题: 将秘密从 git 操作传递到 docker 镜像作为环境变量

  • 工作流程

          - uses: docker/setup-qemu-action@v3
          - uses: docker/setup-buildx-action@v3
          - uses: docker/build-push-action@v5
            with:
              context: apps/vc-screening-service
              platforms: linux/amd64,linux/arm64
              push: true
              tags: ${{ steps.meta.outputs.tags }}
              secrets: |
                "VC_MYSQL_USER=${{ secrets.VC_MYSQL_USER }}"
    
  • Dockerfile

    # syntax=docker/dockerfile:1
    FROM alpine
    RUN --mount=type=secret,id=VC_MYSQL_USER \
      VC_MYSQL_USER=$(cat /run/secrets/VC_MYSQL_USER)
    
    
  • GitHub Actions 输出

    enter image description here

  • Docker 运行输出:

    docker run -it 997245385850.dkr.ecr.ap-northeast-2.amazonaws.com/dev/vc-screening-service:latest sh
    / # env
    HOSTNAME=6a893ca9c566
    SHLVL=1
    HOME=/root
    TERM=xterm
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    PWD=/
    / # 
    
    

缺少环境变量

VC_MYSQL_USER
。我在这里做错了什么?

docker dockerfile github-actions buildx
2个回答
0
投票
  - uses: docker/build-push-action@v5
    with:
      context: apps/vc-screening-service
      build-args: |
        "VC_MYSQL_USER=${{ secrets.VC_MYSQL_USER }}" 
      platforms: linux/amd64,linux/arm64
      push: true
      tags: ${{ steps.meta.outputs.tags }}
      secrets: |
        "VC_MYSQL_USER=${{ secrets.VC_MYSQL_USER }}"

您没有将 VC_MYSQL_USER 作为构建参数传递,您需要添加 ARG VC_MYSQL_USER 也在你的 dockerfile 中

# syntax=docker/dockerfile:1
FROM alpine
ARG VC_MYSQL_USER 
RUN --mount=type=secret,id=$VC_MYSQL_USER \
  VC_MYSQL_USER=$(cat /run/secrets/$VC_MYSQL_USER)

0
投票

您的工作流程定义正确传递了机密。 线

RUN --mount=type=secret,id=VC_MYSQL_USER \
  VC_MYSQL_USER=$(cat /run/secrets/VC_MYSQL_USER)

本身不做任何事情。它是您要在 Dockerfile 中运行的命令的前缀,例如

RUN --mount=type=secret,id=VC_MYSQL_USER \
  VC_MYSQL_USER=$(cat /run/secrets/VC_MYSQL_USER) \
  echo $VC_MYSQL_USER # this will produce *** in Github Actions log
RUN --mount=type=secret,id=VC_MYSQL_USER \
  VC_MYSQL_USER=$(cat /run/secrets/VC_MYSQL_USER) \
  npm generateSchemaFromMySQL # use DB access from secrets to generate code
RUN npm build # build the service using generated files
© www.soinside.com 2019 - 2024. All rights reserved.