会创建新容器的参数修改
修改以下参数时,会导致 docker-compose
创建新的容器:
- image: 更改镜像版本或名称。
- build context: 更改构建上下文路径。
- build args: 更改构建参数。
- container_name: 更改容器名称。
- service name: 更改服务名称。
- network mode: 更改网络模式。
- volumes: 如果绑定挂载的卷的配置改变。
- depends_on: 如果修改了服务依赖。
这些修改会导致 docker-compose
认为需要重新创建容器,因为这些改动通常会改变容器的基础结构或运行时环境。
会在已有容器中更新的参数修改
修改以下参数时,docker-compose
会在已有的容器中进行更新,而不会创建新的容器:
- environment: 环境变量的修改。
- ports: 修改端口映射。
- volumes: 如果是简单的绑定挂载路径更新。
- labels: 添加或修改标签。
- networks: 修改网络配置。
- command: 修改容器启动命令。
- entrypoint: 修改入口点。
- restart: 修改重启策略。
- healthcheck: 健康检查的修改。
- logging: 日志配置的修改。
这些更改通常不会改变容器的基础结构,只是更新容器的运行配置。因此,docker-compose
会在现有容器中应用这些更改,而不重新创建容器。
具体行为总结
当执行 docker-compose up -d
时,docker-compose
会根据 docker-compose.yml
中的更改来决定是否需要重建容器。具体行为如下:
- 新建容器:涉及基础结构或运行环境的更改。
- 更新容器:涉及容器配置或运行时参数的更改。
需要注意的是,虽然某些配置可以更新而不重建容器,但在某些情况下,为了确保更改能正确应用,手动重启容器可能是必要的。可以使用以下命令手动重启容器:
docker-compose restart
评论区