L. *_*lor 9 docker docker-compose docker-buildkit
我最近开始使用 Buildkit 来隐藏一些环境变量,它在 gha 的 prod 中效果很好!
我的 Dockerfile 现在是这样的:
# syntax=docker/dockerfile:1.2
...
RUN --mount=type=secret,id=my_secret,uid=1000 \
MY_SECRET=$(cat /run/secrets/my_secret) \
&& export MY_SECRET
Run Code Online (Sandbox Code Playgroud)
而我的正面是这样的:
DOCKER_BUILDKIT=1 docker build \
--secret id=my_secret,env="MY_SECRET"
Run Code Online (Sandbox Code Playgroud)
当我在我的 Github 操作上运行它时,它运行得很好。
但现在,问题是当我尝试在本地构建它时。执行时docker-compose build失败。当然,因为我没有传递任何秘密,所以我的后端(Dockerfile)将无法从run/secrets/.
到目前为止,我尝试使用以下方法完成本地构建docker-compose build:
1. 使用 Docker 秘密:
我基本上尝试这样做:
$ docker swarm init
$ echo "my_secret_value" docker secret create my_secret -
Run Code Online (Sandbox Code Playgroud)
我认为保存秘密可以解决问题,但没有成功。我仍然收到相同的错误消息:
cat:无法打开“/run/secrets/my_secret”:没有这样的文件或目录
version: '3'
services:
app:
build:
context: "."
args:
- "MY_SECRET"
secrets:
- my_secret
secrets:
my_secret:
external: true
Run Code Online (Sandbox Code Playgroud)
version: '3'
services:
app:
build:
context: "."
args:
- "MY_SECRET"
secrets:
- my_secret
secrets:
my_secret:
file: ./my_secret.txt
Run Code Online (Sandbox Code Playgroud)
args:
- secret=id=my_secret,src=./my_secret.txt
Run Code Online (Sandbox Code Playgroud)
但仍然遇到同样的错误:
cat:无法打开“/run/secrets/my_secret”:没有这样的文件或目录
为了成功执行我做错了什么docker-compose build?
我知道我可以轻松使用两个 Dockerfile,一个在本地构建的 Dockerfile 和一个在产品中构建的 Dockerfile,但我只想按原样使用 Buildkit,只需修改我的docker-compose.yml文件。
有谁知道我缺少什么才能构建本地阅读/run/secrets/?
The*_*ool 22
最近在 v2 中实现了对此的支持。请参阅下面的拉取请求。
提供的示例如下所示:
services:
frontend:
build:
context: .
secrets:
- server-certificate
secrets:
server-certificate:
file: ./server.cert
Run Code Online (Sandbox Code Playgroud)
所以你已经很接近了,但是你必须在构建密钥下添加秘密密钥。
另请记住,您必须使用,docker compose来代替docker-compose, 才能使用 docker 客户端内置的 v2。
| 归档时间: |
|
| 查看次数: |
12319 次 |
| 最近记录: |