我们使用了详见技术,以安全的方式将主机环境变量公开给Docker构建。
# 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>然后这个命令来构建图像:
export DOCKER_BUILDKIT=1
docker build --secret id=github_token,env=GITHUB_TOKEN -t cool-image-bro .上面的工作原理是完美的。
现在,我们还在CI中运行了一个需要修改的坞-撰写文件。但是,即使我确认ENV存在于该作业中,我也不知道如何将环境变量分配给名为github_token的秘密ID。
换句话说,什么是等效的坞-合成命令(向上-构建,或构建),可以接受一个环境变量的映射与一个秘密ID?
发布于 2022-05-10 14:26:30
结果我有点超前了。docker v.2.5.0带来了支持秘密。
如前所述,在修改了Dockerfile之后,我们必须将Dockerfile更新为定义的secrets。
docker-compose.yml
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_user和secrets_github_token文件是从哪里来的呢?在您的CI中,还需要导出环境变量并将其保存到默认的机密文件位置。在我们的项目中,我们是使用任务,所以我们也添加了这些行。
请注意,我们是从CI运行此任务的,因此您可以在不执行任务的情况下进行不同的操作。
- printenv GITHUB_USER > /root/project/secrets_github_user
- printenv GITHUB_TOKEN > /root/project/secrets_github_token然后更新CircleCI配置并向作业添加两个环境变量:
.config.yml
name-of-our-job:
environment:
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1您可能还需要一个更新的Docker版本,我认为他们是在19岁后期或20岁早期推出的。
steps:
- setup_remote_docker:
version: 20.10.11现在,当运行您的基于坞-撰写命令,秘密应该成功地安装通过坞-撰写和可用的正确构建或运行您的Dockerfile指令!
https://stackoverflow.com/questions/71955674
复制相似问题