gpt4 book ai didi

docker - 如何使用 Dockerfile 在 docker 中运行 eval $(envkey-source) 命令?

转载 作者:行者123 更新时间:2023-12-02 19:58:18 27 4
gpt4 key购买 nike

我想运行一个命令,eval $(envkey-source)用于使用 envkey 设置某些环境变量.我安装它,设置我的ENVKEY变量,然后尝试导入所有环境变量。我通过 Docker 完成这一切。但是,docker 在此命令中给出错误:

Step 31/35 : RUN     eval $(envkey-source)
---> Running in 6a9ebf1ede96
/bin/sh: 1: export: : bad variable name
The command '/bin/sh -c eval $(envkey-source)' returned a non-zero code: 2

我尝试阅读 envkey 的文档,但他们对 Docker 只字未提。

我已经使用以下命令安装了 envkey:
ENV     ENVKEY=yada_yada
RUN curl -s https://raw.githubusercontent.com/envkey/envkey-source/master/install.sh | bash

到这里为止,一切顺利。我在控制台上得到了关于如何运行 envkey 来设置所有环境变量的详细建议。
问题出在这一边:
RUN     eval $(envkey-source)

错误:
Step 31/35 : RUN     eval $(envkey-source)
---> Running in 6a9ebf1ede96
/bin/sh: 1: export: : bad variable name
The command '/bin/sh -c eval $(envkey-source)' returned a non-zero code: 2

最佳答案

你不能这样做,有几个原因。 envkey 文档最终链接到 an example in their GitHub您可能会发现其中的信息。

每个 Dockerfile RUN命令在新容器中运行新外壳。特别是在 RUN 中设置的环境变量。命令退出后丢失。任何形式的RUN export ...是无操作的。如果变量是静态的,您可以使用 ENV 设置它们。指令,但在这种情况下,您正在运行需要动态生成它们的程序,您需要另一种方法。

这里的典型模式是使用 shell 脚本作为容器的 ENTRYPOINT。 .这会进行一些初始设置,然后将其自身替换为容器的 CMD .由于CMD在与脚本的其余部分相同的 shell 环境中运行,您可以在此处进行动态变量设置。该脚本可能如下所示:

#!/bin/sh
eval "$(envkey-source)"
exec "$@"

这里要记住的另一件事是任何人都可以 docker inspect您的图像并恢复其环境变量,或 docker run imagename /usr/bin/env .如果你能运行 envkey-source在 Dockerfile 中,环境变量将以明文形式在图像中可用,这违背了目的。即使将 key 嵌入图像中也会有效地泄漏它。您应该在运行时使用 docker run -e 传递它选项或 Docker Compose environment: key ,从主机的环境中中继它。

关于docker - 如何使用 Dockerfile 在 docker 中运行 eval $(envkey-source) 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56253582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com