Docker Compose中如何在node服务结束后自动停止依赖的redis服务
原生 Docker Compose 配置中没有内置字段可以直接定义某服务退出后自动停止其依赖服务,你可以通过以下几种方式实现需求:
方式一:启动时添加命令参数(无需修改现有配置,推荐)
启动时执行以下命令即可:
docker compose up --exit-code-from node
参数说明:
--exit-code-from node:指定整个 Docker Compose 栈的退出状态码继承自node服务的退出码,同时会自动开启退出停止逻辑,只要node服务运行结束退出,所有关联的服务(包括依赖的 Redis)都会被自动停止。
注意:要确保你的 Redis 服务没有配置
restart: always/restart: unless-stopped这类自动重启策略,你现有配置中该参数已被注释,使用默认的restart: "no",符合要求。
方式二:使用 run 命令启动单次任务
如果你只是需要单次运行 Node 脚本任务,也可以直接用 run 命令启动 Node 服务:
docker compose run --rm node
该命令会自动启动 Node 依赖的 Redis 服务,等 Node 脚本运行结束退出后,会自动清理 Node 容器,同时停止所有依赖的服务。--rm参数作用是运行结束后自动删除 Node 容器,避免残留无用容器。
方式三:封装启动脚本(适合需要固定逻辑的场景)
如果不想每次启动都输入长参数,可以在项目根目录新建启动脚本start.sh,内容如下:
#!/bin/bash docker compose up --exit-code-from node
给脚本添加执行权限:chmod +x start.sh,后续直接运行./start.sh即可实现效果。
内容的提问来源于stack exchange,提问作者Bas van Dijk
相关产品推荐
相关产品推荐

