You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose能否用单条命令更新所有已变更镜像?

自动更新Docker Compose中的远程镜像

问题场景

我的compose.yml配置如下:

version: '3.7'

services:
    nginx:
        restart: unless-stopped
        image: ghcr.io/user/frontend:latest
        ports:
            - 80:80
        depends_on: 
            - backend
    backend:
        restart: unless-stopped
        image: ghcr.io/user/backend:latest
        entrypoint: /home/app/web/wsgi-entrypoint.sh
        expose:
            - 8000   

我们在GitHub Docker Registry存储了frontend和backend镜像,需求是:当仓库中的镜像更新后,用单条命令自动拉取更新的镜像并重启对应服务,无需手动逐个拉取再重启。

之前尝试执行:

docker-compose up -d --build

但系统提示所有服务都是up-to-date,但实际镜像已经在仓库更新了。目前只能手动先拉取指定镜像,再执行docker-compose up -d --build才能触发服务重建。

原因

docker-compose up -d --build只会检查本地是否存在指定镜像,不会主动去远程仓库校验镜像的最新版本——只要本地有同名标签的镜像,就会判定为“已更新”,忽略远程的新版本。

解决方法

方法1:单条命令拉取所有更新并重启对应服务

docker-compose up -d --pull always

--pull always参数会强制Docker Compose先去远程仓库检查每个服务的镜像是否有更新,拉取最新版本后再重启对应的服务。如果镜像没有更新,服务会保持原样;如果有更新,会自动拉取并重建服务。

方法2:仅更新指定服务

如果只想更新某个特定服务(比如示例中的nginx对应的frontend镜像),可以指定服务名:

docker-compose up -d --pull always nginx

这条命令只会检查nginx服务对应的镜像是否有更新,拉取最新版本后重启该服务,不会影响其他服务。

补充说明

  • --pull always是Docker Compose 1.23.0及以上版本支持的参数,确保你的版本符合要求。
  • 如果使用新版的docker compose(无横杠的CLI),命令格式为:
    docker compose up -d --pull always
    

内容的提问来源于stack exchange,提问作者user840718

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:40:32