如何在运行时将命令行参数传递给Docker映像中的dotnet dll?

时间:2019-02-12 16:51:38

标签: .net docker

处理我的第一个Docker映像。这是一个使用CMD启动的dotnet程序(Docker中仅允许一个CMD)。我想在运行时向程序传递一个参数(API密钥)。经过一番谷歌搜索后,找不到明确的答案。入口点似乎没有帮助。也许是ENV,但似乎ENV仅适用于Docker。我的Dockerfile:

FROM microsoft/dotnet
WORKDIR /app
COPY . /app
CMD [ "dotnet",  "/app/netcore/Somename.dll"]

谢谢

1 个答案:

答案 0 :(得分:2)

如您的示例一样,如果Docker将ENTRYPOINTCMD连接到单个命令行中(如果它们都使用 JSON 表示法)。

这是JSON表示法:CMD [ "dotnet", "/app/netcore/Somename.dll"]

这是外壳符号:CMD dotnet /app/netcore/Somename.dll

您还需要了解的另一件事-在{strong>之后中写成docker run ... <image_name> ...

总结一下。

  1. 命令行的常量(不可变)部分,例如CMD,您可以放入dotnet foo.dll

  2. 可变部分(如其他参数)一样,您提供了ENTRYPOINT,还可以选择将默认值设置为docker run中的CMD

示例:

Dockerfile

Dockerfile

命令行1:

...
ENTRYPOINT ["dotnet", "/app/netcore/Somename.dll"]
CMD ["--help"]

将产生docker run ... <your image name> --environment=Staging --port=8080

命令行2:

dotnet /app/netcore/Somename.dll --environment=Staging --port=8080

将得到docker run ... <your image name> dotnet /app/netcore/Somename.dll --help来自Dockerfile中定义的默认值。