如何获取通过入口点脚本中的-e键注入的环境变量?

时间:2019-04-05 08:08:24

标签: docker environment-variables

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

1 个答案:

答案 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