相关疑难解决方法(0)

在本地构建 docker compose 时如何使用秘密

我最近开始使用 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”:没有这样的文件或目录

  1. 我还尝试在我的 docker-compose 文件中传递秘密,如下所示,但也不起作用:
version: '3'
services:
  app:
    build:
      context: "."
      args:
        - "MY_SECRET"
  secrets:
      - my_secret
secrets: …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose docker-buildkit

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

docker ×1

docker-buildkit ×1

docker-compose ×1