我需要在端口上启动我的应用,通过docker run
命令中的-e键设置
我使用ENTRYPOINT
脚本运行我的应用程序,并尝试获取$PORT
env变量,但是没有任何通过-e键设置的env变量。
在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
答案 0 :(得分:0)
如果我在本地运行此命令,则会添加如下图像名称:
sudo docker run -p 15615:8081 30c7bb13d4b4 --name queue_2_middleware -e PORT=8081
那不会做您期望的事,docker命令行是顺序敏感的。图像名称后面的所有内容均用于替换图像中CMD
的值。定义了入口点后,这些只是入口点脚本的args。换句话说,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