在针对不同可执行文件的 Dockerfile 中组合 ENTRYPOINT 和 CMD

Combining ENTRYPOINT and CMD in Dockerfile targeting different executables

我有一个定义 dotnet 入口点的 Dockerfile。此外,我有一个程序配置为 supervisor 下的 运行(具有 supervisord.conf 定义)。当容器为 运行 时,我需要启动主管服务并将几个参数传递给 ENTRYPOINT 可执行文件。我不能结合使用 ENTRYPOINT 和 CMD,因为 CMD args 与 ENTRYPOINT 无关。我还想保留 ENTRYPOINT 以明确让容器包装 dotnet exec。关于如何实现这一点有什么想法吗?

我知道我的方案是完整的,因为我可以附加到 运行ning 容器然后启动 supervisor 服务。

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
…
FROM base AS final    
ENTRYPOINT ["dotnet", "BLAH.dll"]
CMD ["service", "supervisor", "start"]

您似乎想同时 运行 两种不同的服务。
您无法通过 Dockerfile 实现这一点。

我建议你为 运行 这两个服务制作一个脚本。
并在 Dockerfile 中的 CMDENTRYPOINT 中使用该脚本。