嗨,我想知道是否可以在docker container start上自动同时自动运行两个脚本。第一个脚本必须运行客户端应用程序,第二个脚本要运行服务器应用程序作为后台。
答案 0 :(得分:1)
您可以use CMD
in your Dockerfile
和use command &
to run two command in parallel:
CMD server_command & client_command
(其中server_command
是用于启动服务器的命令,而client_command
是用于启动客户端的命令)
答案 1 :(得分:1)
Docker对此的官方立场始终是,最好仅在容器中运行单个服务。话虽如此,他们还维护着非常强大的文档,远远超出了将多个服务整合到一个容器中的可能解决方案。
https://docs.docker.com/config/containers/multi-service_container/
一个简短的摘要就是,当您拥有多个服务时,需要具有某种类型的“ init”过程来充当容器中所有服务的父级。
有两种方法可以做到这一点:
两者都有问题。首先是因为bash并不是init系统,当bash表现不佳时,您可能会遇到各种各样的麻烦。第二个原因是,将init系统放入docker容器是一件很繁重的事情。
说了这么多,最好的解决方案是将服务分成两个容器。
答案 2 :(得分:1)
如前所述,建议不要进行多个过程。
但是,在某些情况下,需要具有多个进程。在这种情况下,通常的方法是使用supervisor之类的流程管理器。