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

docker-compose使用远程--context构建时为何使用旧镜像且文件缺失?

问题根源

你遇到的是docker-compose跨远程context部署时的已知镜像匹配逻辑缺陷,核心原因是你的docker-compose.yaml没有为服务显式指定镜像名:

  • 未设置image字段时,docker-compose默认使用[当前目录名]-[服务名]作为默认镜像名,没有固定标签的情况下,远程Docker daemon即使完成了新镜像构建,启动容器时仍有可能误匹配到旧的同名镜像,哪怕构建日志显示COPY层没有走缓存、已重新执行。
  • 你之前删除远程容器和镜像后恢复正常,也正好印证了旧同名镜像干扰的问题。

修复步骤

  1. 修改docker-compose.yaml,为web服务显式指定固定的镜像名和标签:
version: "3.9"
services:
  web:
    build: .
    image: my-node-web:latest # 新增此行,镜像名可自定义
    ports:
    - "1234:4321"
    restart: always
  1. 执行远程部署命令时新增--pull never参数,避免远程daemon尝试拉取公开的同名镜像,强制使用本次构建的本地上下文生成的镜像:
docker-compose --context server up --build --pull never -d

验证方法

部署完成后可以先检查远程镜像的创建时间,确认是本次构建生成的新版本:

docker --context server images my-node-web:latest

此时进入容器即可看到新增的testing.txt文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:45:05