事实证明我有点领先于时代。 docker compose v.2.5.0 带来支持秘密 https://github.com/docker/compose/releases/tag/v2.5.0.
按照上面的说明修改 Dockerfile 后,我们必须将 docker-compose 更新为定义的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
and secrets_github_token
来自(哪里?在 CI 中,您还需要导出环境变量并将其保存到默认机密文件位置。在我们的项目中我们是使用任务 https://taskfile.dev/#/所以我们也添加了这些行。
请注意,我们正在从 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
现在,当运行基于 docker-compose 的命令时,秘密应该通过 docker-compose 成功安装,并且可用于正确构建或运行 Dockerfile 指令!