Docker 通过supervisor脚本创建应用程序的启动顺序

Docker 通过supervisor脚本创建应用程序的启动顺序,docker,docker-compose,jenkins-pipeline,microservices,supervisord,Docker,Docker Compose,Jenkins Pipeline,Microservices,Supervisord,我有一个docker映像,由两个微服务组成。当我们部署它时,通过docker stack deploy,两个服务都开始运行。 在Dockerfile中,我使用了supervisor。 现在,我想通过supervisor脚本控制微服务的启动。我使用了以下方法: [program:zookeeper] startsecs=60 directory= /app command=/bin/bash -c "java -jar zoo.jar" priority=1 autostart = true au

我有一个docker映像,由两个微服务组成。当我们部署它时,通过
docker stack deploy
,两个服务都开始运行。 在Dockerfile中,我使用了supervisor。 现在,我想通过supervisor脚本控制微服务的启动。我使用了以下方法:

[program:zookeeper]
startsecs=60
directory= /app
command=/bin/bash -c "java -jar zoo.jar"
priority=1
autostart = true
autorestart = true

[program:kafka]
startsecs=60
directory= /app
command=/bin/bash -c "java -jar kaf.jar"
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.log
priority=999
autostart = true
autorestart = true
所以,基本上在开始卡夫卡之前,zookeeper应该启动并运行。我在supervisor.conf文件中使用了上述纸条,但它不起作用。如何做到这一点

谢谢
Kumar Shorav

几乎总是在两个单独的容器中运行两个单独的服务。对于您希望以不同方式扩展且具有不同存储要求的服务,尤其如此。@DavidMaze嗨,David,谢谢您的评论。你的意思是,我们需要有两个不同的图像为两个不同的服务?若我只有一个映像,但需要控制服务启动的顺序,那个么正确的方法是什么?描述了这一点(它通常涉及在容器启动中放入一些逻辑,因此实际上并不特定于Compose)。