首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头工人-组成相当于码头工人建造-秘密论证

码头工人-组成相当于码头工人建造-秘密论证
EN

Stack Overflow用户
提问于 2022-04-21 13:52:07
回答 1查看 559关注 0票数 4

我们使用了详见技术,以安全的方式将主机环境变量公开给Docker构建。

代码语言:javascript
复制
# syntax=docker/dockerfile:1.2
FROM golang:1.18 AS builder

# move secrets out of the build process (and docker history)
RUN --mount=type=secret,id=github_token,dst=/app/secret_github_token,required=true,uid=10001 \
    export GITHUB_TOKEN=$(cat /app/secret_github_token) && \
    <nice command that uses $GITHUB_TOKEN>

然后这个命令来构建图像:

代码语言:javascript
复制
export DOCKER_BUILDKIT=1
docker build --secret id=github_token,env=GITHUB_TOKEN -t cool-image-bro .

上面的工作原理是完美的。

现在,我们还在CI中运行了一个需要修改的坞-撰写文件。但是,即使我确认ENV存在于该作业中,我也不知道如何将环境变量分配给名为github_token的秘密ID。

换句话说,什么是等效的坞-合成命令(向上-构建,或构建),可以接受一个环境变量的映射与一个秘密ID?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-10 14:26:30

结果我有点超前了。docker v.2.5.0带来了支持秘密

如前所述,在修改了Dockerfile之后,我们必须将Dockerfile更新为定义的secrets

docker-compose.yml

代码语言:javascript
复制
services:
  my-cool-app:
    build:
      context: .
      secrets:
        - github_user
        - github_token
...
secrets:
  github_user:
    file: secrets_github_user
  github_token:
    file: secrets_github_token

但是secrets_github_usersecrets_github_token文件是从哪里来的呢?在您的CI中,还需要导出环境变量并将其保存到默认的机密文件位置。在我们的项目中,我们是使用任务,所以我们也添加了这些行。

请注意,我们是从CI运行此任务的,因此您可以在不执行任务的情况下进行不同的操作。

代码语言:javascript
复制
- printenv GITHUB_USER > /root/project/secrets_github_user
- printenv GITHUB_TOKEN > /root/project/secrets_github_token

然后更新CircleCI配置并向作业添加两个环境变量:

.config.yml

代码语言:javascript
复制
  name-of-our-job:
    environment:
      DOCKER_BUILDKIT: 1
      COMPOSE_DOCKER_CLI_BUILD: 1

您可能还需要一个更新的Docker版本,我认为他们是在19岁后期或20岁早期推出的。

代码语言:javascript
复制
    steps:
      - setup_remote_docker:
          version: 20.10.11

现在,当运行您的基于坞-撰写命令,秘密应该成功地安装通过坞-撰写和可用的正确构建或运行您的Dockerfile指令!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71955674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档