Docker与一个终止容器组合

Docker与一个终止容器组合,docker,exit,exit-code,docker-compose,fig,Docker,Exit,Exit Code,Docker Compose,Fig,我有一个docker compose设置,包括一个数据库容器、一个应用程序容器和一个容器,其中一个容器用必要的数据预加载数据库 我想用docker compose up启动所有容器,而预加载容器在完成退出0后终止 但终止此一容器会关闭完整的设置,并显示以下消息: composesetup_load_1 exited with code 0 Gracefully stopping... (press Ctrl+C again to force) Stopping composesetup_app_

我有一个docker compose设置,包括一个数据库容器、一个应用程序容器和一个容器,其中一个容器用必要的数据预加载数据库

我想用
docker compose up
启动所有容器,而预加载容器在完成
退出0后终止

但终止此一容器会关闭完整的设置,并显示以下消息:

composesetup_load_1 exited with code 0
Gracefully stopping... (press Ctrl+C again to force)
Stopping composesetup_app_1...
Stopping composesetup_db_1...

有没有办法在一个docker compose设置中拥有多个具有不同使用寿命的容器?如果是,如何操作?

我现在的解决方法是通过在entrypoint脚本的末尾添加
tail-f/dev/null
来保持预加载容器的运行。这将保持进程运行,而实际不会发生任何事情。

使用at
docker compose up-d
将以分离模式运行进程。这避免了使用Ctrl+C终止服务并因此停止容器的需要


注意:我从您共享的消息“
优雅地停止…(再次按Ctrl+C以强制)
”中判断您使用Ctrl+C终止了进程。

否,我没有使用Ctrl+C终止进程进程进程。进程刚刚完成其工作,因此终止于
退出0
。所以用
-d
选项运行docker compose不是解决方案。@white_gecko,好的,谢谢你的澄清。然后,该行为就好像设置了标志
--abort on container exit
?好的,也许这个标志是一个解决方案…当我发布了这个问题时,至少这个行为是默认的。这是做这类事情的常用方法吗?有没有一种“正确的”/“官方的”方法可以做到这一点?不管是哪种情况,我都喜欢这个巧妙的解决方案。这个,太棒了。谢谢,不过最好是
sleep inf