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
而我的正面是这样的:
DOCKER_BUILDKIT=1 docker build \
    --secret  id=my_secret,env="MY_SECRET"
当我在我的 Github 操作上运行它时,它运行得很好。
但现在,问题是当我尝试在本地构建它时。执行时docker-compose build失败。当然,因为我没有传递任何秘密,所以我的后端(Dockerfile)将无法从run/secrets/.
到目前为止,我尝试使用以下方法完成本地构建docker-compose build:
1. 使用 Docker 秘密:
我基本上尝试这样做:
$ docker swarm init
$ echo "my_secret_value" docker secret create my_secret -
我认为保存秘密可以解决问题,但没有成功。我仍然收到相同的错误消息:
cat:无法打开“/run/secrets/my_secret”:没有这样的文件或目录
version: '3'
services:
  app:
    build:
      context: "."
      args:
        - "MY_SECRET"
  secrets:
      - my_secret
secrets:
  my_secret:
    external: true
version: '3'
services:
  app:
    build:
      context: "."
      args:
        - "MY_SECRET"
  secrets:
      - my_secret
secrets:
  my_secret:
    file: ./my_secret.txt
args:
    - secret=id=my_secret,src=./my_secret.txt
但仍然遇到同样的错误:
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
所以你已经很接近了,但是你必须在构建密钥下添加秘密密钥。
另请记住,您必须使用,docker compose来代替docker-compose, 才能使用 docker 客户端内置的 v2。
| 归档时间: | 
 | 
| 查看次数: | 12319 次 | 
| 最近记录: |