docker - 在 Entrypoint 文件中导出环境变量不起作用?

标签 docker environment-variables entry-point docker-entrypoint

我在将环境变量导出到 docker 入口点文件时遇到了一些问题。

这是我的 docker 文件内容:

   FROM ubuntu:16.04
   ADD entrypoint.sh .
   RUN chmod 777 entrypoint.sh
   ENTRYPOINT ["./entrypoint.sh"]
   CMD ["/bin/bash"]

在 Entrypoint 文件中,我尝试运行命令“export TOKEN=$client_token”。然后,我使用该图像文件创建一个容器,然后运行“docker exec -it/bin/bash”命令,然后进入容器,我继续运行“set”命令以显示所有环境变量。所以,我找不到之前导出的 $TOKEN 变量。

如何将环境变量导出到入口点文件?

最佳答案

您必须在运行时使用“-e”将宿主环境变量 (client_token) 注入(inject)到 docker 容器中:

docker run -it --rm -e client_token=<whatever> <your image>

例如,这适用于这种入口点:

#!/bin/bash
export TOKEN=$client_token
echo "The TOKEN is: ${TOKEN}"
# do stuff ...

如果你不知道容器运行时的 token 值,你应该在附加期间注入(inject)(docker exec)并在里面执行所需的操作,但如果运行它可能对你无效容器已经需要该信息。

docker exec -it -e TOKEN=<whatever> <your container>

BR

关于docker - 在 Entrypoint 文件中导出环境变量不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60549981/

相关文章:

.net - VB.Net 'Sub Main' 未找到

Angular 4 应用程序引导和入口点

docker - .env的Docker-Compose传递命令args

node.js - .env 文件中的 key 在 NodeJS 中不起作用

linux - Debian Wheezy 7.5-用户 session 中未加载变量LD_LIBRARY_PATH

java - 如何在JSch中设置Java home来执行命令?

c - 无法在动态链接库中找到过程入口点axiom_attribute_create

java - 在 Docker 上调试 Java 应用程序

amazon-web-services - 无法访问jarfile-Elastic Beanstalk上的Docker

ruby - compass 配置因 Docker 组合失败