【问题标题】:How to build a docker image with RSA key as build argument using Github Actions如何使用 Github Actions 构建使用 RSA 密钥作为构建参数的 docker 镜像
【发布时间】:2021-01-20 17:15:17
【问题描述】:

我正在尝试在 ubuntu-latest 上使用 github 操作构建 docker 映像。 docker 镜像需要通过 build arg 接收一个 RSA KEY。

虽然在我的 macos 机器中构建图像没有任何问题,但在构建 github 操作时遇到以下错误。

密钥被存储为 ENV 变量,我使用的命令如下:

docker build --build-arg user_private_rsa=$USER_PRIVATE_RSA 。 -t 身份验证服务

使用上面的命令在mac上成功构建镜像,但是使用这个gihub动作时,我一点运气都没有。

on:
  push:
    branches: [ master ]
jobs:
  build-deploy:
    name: Build docker image
    runs-on: ubuntu-latest
  build-push-ecr:
    name: Build docker image and push to ecr
    runs-on: ubuntu-latest
    steps:  
      - name: Checkout
        uses: actions/checkout@v2
      - run: docker build --build-arg user_private_rsa=$USER_PRIVATE_RSA . -t auth-service
      - name: Build image
        env:
          USER_PRIVATE_RSA: ${{ secrets.USER_PRIVATE_RSA }}

错误的标志语法:-----END 请参阅“docker build --help”。

发生错误是因为在 github 操作中执行 docker build,最终成为多行命令。

有没有人遇到过类似的问题并可以帮我解决? 非常感谢!

【问题讨论】:

  • 请记住,从 Docker 映像中复制文件非常容易,docker inspect 或 docker history 可以显示设置为环境变量或在命令行中使用的任何内容。您可能不想像这样将 RSA 密钥注入到您的构建中。
  • 嘿,这个不错!不记得了。谢谢!
  • 我现在注意到您的名称前有一个虚假的破折号 (-)。 YAML 解析器开始一个新的步骤,而 Docker 步骤永远看不到环境变量

标签: docker build dockerfile rsa github-actions


【解决方案1】:

您应该引用变量,即--build-arg user_private_rsa="$USER_PRIVATE_RSA",否则 docker 会在第一个空格之后选择任何内容作为自己的选项。

【讨论】:

  • 您好 Guilio,这样做不会获取变量的内容,而是获取文字字符串 $USER_PRIVATE_RSA。 :(
【解决方案2】:

如果有人遇到类似问题,我通过将 rsa 密钥作为 base64 字符串传递来解决它,因为 docker 需要一个单行命令。

【讨论】:

    猜你喜欢
    • 2023-02-17
    • 2021-06-05
    • 2020-10-28
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2014-09-16
    相关资源
    最近更新 更多