使用新的Docker时有没有办法设置环境变量构建增强功能 https://docs.docker.com/develop/develop-images/build_enhancements/?
试过
RUN --mount=type=secret,id=secret export SECRET=/run/secrets/secret
RUN --mount=type=secret,id=secret ENV SECRET=/run/secrets/secret
两者都不起作用。或者在 dockerfile 上的环境变量上设置秘密是否不好?自从运行以来docker history
以纯文本设置的环境变量。如果是这种情况,设置环境变量尽可能安全的最佳方法是什么?
要从秘密中设置变量,您可以使用$(cat /filename)
shell 中的语法。这会影响该单个步骤中的 shell,因此对该变量的所有使用都需要在同一步骤中。您无法将变量从 RUN 步骤提取到 ENV 步骤中。如果您需要将其保留到其他 RUN 步骤,则需要将变量写入文件系统并将其包含在映像中,这是不可取的(而只需在后面的 RUN 步骤中再次挂载机密)。
这是一个工作示例,您还可以使用以下命令导出该秘密export secret_var
:
$ cat df.secret
FROM busybox
RUN --mount=type=secret,id=secret \
secret_var="$(cat /run/secrets/secret)" \
&& echo ${secret_var}
$ cat secret.txt
my_secret
$ docker build --progress=plain --secret id=secret,src=$(pwd)/secret.txt -f df.secret .
#1 [internal] load build definition from df.secret
#1 sha256:85a18e77d3e60159b744d6ee3d96908a6fed0bd4f6a46d038e2aa0201a1028de
#1 DONE 0.0s
#1 [internal] load build definition from df.secret
#1 sha256:85a18e77d3e60159b744d6ee3d96908a6fed0bd4f6a46d038e2aa0201a1028de
#1 transferring dockerfile: 152B done
#1 DONE 0.0s
#2 [internal] load .dockerignore
#2 sha256:a5a676bca3eaa2c757a3ae40d8d5d5e91b980822056c5b3b6c5b3169fc65f0f1
#2 transferring context: 49B done
#2 DONE 0.0s
#3 [internal] load metadata for docker.io/library/busybox:latest
#3 sha256:da853382a7535e068feae4d80bdd0ad2567df3d5cd484fd68f919294d091b053
#3 DONE 0.0s
#5 [1/2] FROM docker.io/library/busybox
#5 sha256:08a03f3ffe5fba421a6403c31e153425ced631d108868f30e04985f99d69326e
#5 DONE 0.0s
#4 [2/2] RUN --mount=type=secret,id=secret secret=$(cat /run/secrets/secret) && echo ${secret}
#4 sha256:6ef91a8a7daf012253f58dba292a0bd86af1d1a33a90838b6a99aba5abd4cfaf
#4 0.587 my_secret
#4 DONE 0.7s
#6 exporting to image
#6 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
#6 exporting layers 0.0s done
#6 writing image sha256:a52db3458ad88481406cd60627e2ed6f55b6720c1614f65fa8f453247a9aa4de done
#6 DONE 0.0s
注意该行#4 0.587 my_secret
显示秘密已输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)