将ENTRYPOINT和CMD结合到Dockerfile中以不同的可执行文件为目标

时间:2019-02-05 17:40:57

标签: docker .net-core dockerfile docker-entrypoint

我有一个定义了dotnet ENTRYPOINT的Dockerfile。另外,我有一个配置为在supervisor下运行(定义为supervisord.conf)的程序。当容器运行时,我需要启动Supervisor服务,还将几个args传递给ENTRYPOINT可执行文件。我无法将ENTRYPOINT和CMD结合使用,因为CMD参数与ENTRYPOINT无关。我还想保留ENTRYPOINT以显式使容器包装dotnet执行。关于如何实现此目标有什么想法吗?

我知道我的情况是完整的,因为我可以附加到正在运行的容器,然后启动supervisor服务。

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

1 个答案:

答案 0 :(得分:2)

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

我建议您编写一个脚本来运行这两个服务。
并在Dockerfile的CMDENTRYPOINT中使用该脚本。