如何在docker-compose.yml中重新构建docker容器?

16 浏览
0 Comments

如何在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日
0
0 Comments

使用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] [..]

0
0 Comments

docker-compose up

$ docker-compose up -d --no-deps --build 

--no-deps - 不启动链接的服务。

--build - 在启动容器之前构建镜像。

0