docker compose up:--always-recreate-deps与--build的区别及疑问
Docker Compose 参数疑问解答
1. "重新创建依赖容器"与"启动容器前构建镜像"的区别
--always-recreate-deps:聚焦容器层面,强制重建当前服务所依赖的所有容器(即depends_on字段指定的容器),不管这些容器的镜像、配置有没有变化。只操作容器,不涉及镜像构建。--build:聚焦镜像层面,启动容器前检查对应服务的Dockerfile或构建上下文,若有变动则重新构建镜像,再用新镜像启动/重启服务容器。只处理镜像构建和当前服务容器,不会主动重建依赖容器。
2. Dockerfile修改时,使用docker compose up --build是否需要加--always-recreate-deps
不需要。--build会自动重新构建修改后的Dockerfile对应的镜像,并重启当前服务的容器。而依赖容器的配置、镜像如果没有变化,重建它们没有意义;如果依赖容器需要更新,那也是依赖容器自身的配置或镜像变动导致的,和当前服务的Dockerfile修改无关。
3. 已有--build和--force-recreate时,--always-recreate-deps的使用场景
- 仅需更新依赖容器的运行配置(比如环境变量、挂载路径、启动命令),但依赖容器的镜像没有变化,此时
--build无法处理,--force-recreate会重建所有容器(包括当前服务),而--always-recreate-deps只重建依赖容器,精准控制范围,避免当前服务中断。 - 依赖容器使用官方静态镜像(如MySQL、Redis),需要重置容器状态(比如清空数据、重新加载初始化配置),但不想重启当前服务容器时。
- 当依赖容器的健康状态异常,需要强制重建依赖容器来恢复,但当前服务容器运行正常,无需重建时。
内容的提问来源于stack exchange,提问作者user9608133
相关产品推荐
相关产品推荐

