docker - 如何在入口点脚本中通过 -e 键注入(inject)环境变量?

标签 docker environment-variables

我需要在端口上启动我的应用程序,通过 docker run 中的 -e 键设置命令

我在 ENTRYPOINT 中运行我的应用程序脚本并尝试获取 $PORT env 变量,但没有任何 env 变量,通过 -e 键设置。

在 Dockerfile 中提供应用程序

ENTRYPOINT ["sh", "entrypoint.sh"]

entrypoint.sh 脚本:
#!/bin/bash

func start --port $PORT


docker 运行命令:
docker run -d -p 20937:8081 --name queue_0_middleware -e WEBSITE_CORS_ALLOWED_ORIGINS=https://functions.azure.com,https://functions-staging.azure.com,https://functions-next.azure.com -e PORT=8081

最佳答案

If I run this command locally I add image name like this: sudo docker run -p 15615:8081 30c7bb13d4b4 --name queue_2_middleware -e PORT=8081



这不会像你期望的那样,docker 命令行是顺序敏感的。图像名称后面的所有内容都用于替换 CMD 的值在你的图像里面。定义了入口点后,这些只是入口点脚本的参数。换句话说,docker 命令看起来像:
docker run ${args_to_run} ${image_name} ${cmd_override}

解决方法是使用 args 将命令重新排序为 run放在图像名称之前:
sudo docker run -p 15615:8081 --name queue_2_middleware -e PORT=8081 30c7bb13d4b4

关于docker - 如何在入口点脚本中通过 -e 键注入(inject)环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55530938/

相关文章:

android - 使 android espresso 测试根据其运行环境运行

python - 如何设置vsvars32环境变量?

docker - 如何更改构建上下文的 docker 源

reactjs - 是否可以将 React 应用程序配置为在 Kubernetes 中使用容器的环境变量?

github - 如何为 GitHub 存储库设置环境变量?

windows - BAT 文件 : strange SET(? ) 行为

javascript - 环境变量不起作用(Next.JS 9.4.4)

docker - 使用 Ansible 重启多个 Docker 容器

docker - 将文件从Docker容器暴露给主机

amazon-web-services - AWS EB 从 docker 部署 TypeError