我需要在端口上启动我的应用程序,通过 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/