处理我的第一个 Docker 镜像。它是一个使用 CMD 启动的 dotnet 程序(Docker 中只允许一个 CMD)。我想在运行时向程序传递一个参数(一个 API 密钥)。经过一番谷歌搜索,没有找到明确的答案。入口点似乎没有帮助。也许是 ENV,但似乎 ENV 仅适用于 Docker。我的 Dockerfile:
FROM microsoft/dotnet
WORKDIR /app
COPY . /app
CMD [ "dotnet", "/app/netcore/Somename.dll"]
Run Code Online (Sandbox Code Playgroud)
谢谢
Docker 加入ENTRYPOINT并CMD进入单个命令行,如果两者都使用JSON表示法,就像在您的示例中一样。
这是 JSON 表示法: CMD [ "dotnet", "/app/netcore/Somename.dll"]
这是外壳符号: CMD dotnet /app/netcore/Somename.dll
你需要知道的另一件事 -docker run ... <image_name> ... 后面写的是什么 - 被认为是CMD.
所以,总结一下。
命令行的常量(不可变)部分,就像dotnet foo.dll您可以放入ENTRYPOINT.
变量部分,如附加参数,您提供docker run并可选择将默认值CMD放入Dockerfile
例子:
文件
...
ENTRYPOINT ["dotnet", "/app/netcore/Somename.dll"]
CMD ["--help"]
Run Code Online (Sandbox Code Playgroud)
命令行 1:
docker run ... <your image name> --environment=Staging --port=8080
Run Code Online (Sandbox Code Playgroud)
会导致 dotnet /app/netcore/Somename.dll --environment=Staging --port=8080
命令行 2:
docker run ... <your image name>
Run Code Online (Sandbox Code Playgroud)
将导致dotnet /app/netcore/Somename.dll --help. --help来自 Dockerfile 中定义的默认值。
| 归档时间: |
|
| 查看次数: |
3481 次 |
| 最近记录: |