处理我的第一个Docker映像。这是一个使用CMD启动的dotnet程序(Docker中仅允许一个CMD)。我想在运行时向程序传递一个参数(API密钥)。经过一番谷歌搜索后,找不到明确的答案。入口点似乎没有帮助。也许是ENV,但似乎ENV仅适用于Docker。我的Dockerfile:
FROM microsoft/dotnet
WORKDIR /app
COPY . /app
CMD [ "dotnet", "/app/netcore/Somename.dll"]
谢谢
答案 0 :(得分:2)
如您的示例一样,如果Docker将ENTRYPOINT
和CMD
连接到单个命令行中(如果它们都使用 JSON 表示法)。
这是JSON表示法:CMD [ "dotnet", "/app/netcore/Somename.dll"]
这是外壳符号:CMD dotnet /app/netcore/Somename.dll
您还需要了解的另一件事-在{strong>之后中写成docker run ... <image_name> ...
。
总结一下。
命令行的常量(不可变)部分,例如CMD
,您可以放入dotnet foo.dll
。
可变部分(如其他参数)一样,您提供了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中定义的默认值。