如何在docker-compose.yml中重新构建docker容器?
如何在docker-compose.yml中重新构建docker容器?
在docker-compose.yml中定义了一系列服务。这些服务已经启动了。我需要重建其中一个服务,并在不启动其他服务的情况下启动它。
我运行了以下命令:
docker-compose up -d # run all services docker-compose stop nginx # stop only one. but it is still running !!! docker-compose build --no-cache nginx docker-compose up -d --no-deps # link nginx to other services
最后我得到的是旧的nginx容器。
Docker-compose并没有杀死所有正在运行的容器!
admin 更改状态以发布 2023年5月20日
使用docker-compose 1.19的up
docker-compose up --build --force-recreate --no-deps [-d] [..]
如果没有一个或多个service_name
参数,所有的镜像将被构建(如果缺失),所有的容器将被重建。
来自帮助菜单
Options: -d, --detach Detached mode: Run containers in the background, print new container names. Incompatible with --abort-on-container-exit. --no-deps Don't start linked services. --force-recreate Recreate containers even if their configuration and image haven't changed. --build Build images before starting containers.
没有缓存
为了强制重建并忽略缓存层,我们必须首先构建一个新的镜像
docker-compose build --no-cache [..]
来自帮助菜单
Options: --force-rm Always remove intermediate containers. -m, --memory MEM Set memory limit for the build container. --no-cache Do not use cache when building the image. --no-rm Do not remove intermediate containers after a successful build.
然后重新创建容器
docker-compose up --force-recreate --no-deps [-d] [..]
$ docker-compose up -d --no-deps --build
--no-deps - 不启动链接的服务。
--build - 在启动容器之前构建镜像。