#Docker Compose
共 42 篇文章
Compose 构建正常,Dev Container 的 COPY 找不到文件:核对忽略规则
Dev Container生成扩展Dockerfile后,原专用忽略文件可能不再被选中。对照真实override和context,再审查根规则及镜像输入。
Compose 共享外部网络后,db 偶尔连到另一个项目
共享外部网络上的db别名可能同时属于两套数据库。对照实际Aliases和IP,改用唯一目标或保留私有网络,并验收数据环境。
Docker Compose 报外部网络不存在
Docker Compose 找不到声明为 external 的网络。核对实际网络名和 Docker Engine,按跨项目共享或项目内部使用选择创建网络、修正引用或交给 Compose 管理,并检查容器接入和业务连接。
Docker Compose 配置 GPU 后报 devices was unexpected
GPU 镜像能单独运行,Compose 却拒绝 reservations 下的 devices,可能是实际调用了不支持设备请求的旧程序。核对入口、升级插件,再分别验证配置和 GPU 访问。
Docker Compose 配置了 env_file 仍提示变量未设置
Docker Compose 声明 env_file 后仍提示变量未设置,可能是 environment 的插值空值覆盖了文件内容。区分容器环境与 CLI 插值,按用途调整配置,并在重建服务前检查最终模型。
Docker Compose 使用 host 网络时,ports 不生效或报不兼容
Compose 同时设置 network_mode: host 和 ports,可能报不兼容或忽略端口映射。根据实际需求选择普通网络或 host 模式,并核对监听端口、访问范围和依赖连接。
PostgreSQL 18 挂载 /var/lib/postgresql/data 后启动失败
官方 PostgreSQL 18 镜像改用主版本数据子目录,旧挂载可能报 runc 错误或 unused mount/volume。确认实际卷与数据版本,修正空目录部署,并区分挂载调整和数据库升级。
Docker Compose 升级应用后,旧覆盖文件导致服务缺少 image 或 build
应用升级移除了旧服务,本地 Compose 覆盖文件仍保留它的配置,合并后便可能报缺少 image 或 build。通过分开校验文件定位残留,迁移有效设置,并核对服务清单与数据挂载。
Docker Compose 环境变量含 ${Time.now} 时报 Invalid interpolation format
Compose 把应用需要的 ${Time.now} 当成变量表达式时,使用双美元符号保留原文,并区分 YAML、环境文件和 shell 的解析阶段,验证容器收到的值。
Linux Docker 容器无法解析 host.docker.internal
Linux Docker 容器访问 host.docker.internal 提示无法解析。为现有 Compose 服务添加 host-gateway 映射,重建后分别验证容器 hosts、系统解析与宿主机服务连接,并处理监听地址不匹配。
Docker Compose 写了两个 command,初始化命令没有执行
Docker Compose 同一服务重复写 command 不能按顺序执行初始化和主程序。说明单个 command 配合 sh -c、初始化失败阻断、ENTRYPOINT 参数冲突,以及重建后的验证和数据回退边界。
Docker 挂载配置文件报 not a directory:为什么宿主机多了一个同名目录
配置文件挂载时报 not a directory,核对 Compose 最终路径、源文件类型与容器目标,用 create_host_path: false 阻止误建目录,再重建和验证受影响的服务。
Docker Compose 把卷名写进 depends_on 后报 undefined service
depends_on 必须引用 services 下的服务名。数据库服务叫 database、数据卷叫 db 时,应修正依赖引用,保留原卷与挂载,再用相同部署参数校验配置。
Docker Compose 环境变量报 contains true, which is an invalid type
Compose 环境变量报 contains true, which is an invalid type 时,检查 environment 映射中的裸布尔值。用引号保留字符串,核验最终配置,并区分类型校验通过与应用开关实际生效。
Docker COPY 无法读取构建上下文外的文件
Dockerfile 使用 COPY ../ 读取父目录文件时,传统构建器会拒绝越界,BuildKit 则会去掉越界路径。按构建上下文调整源路径,并核对 Compose 配置与 .dockerignore。
Docker Compose 启动时报 no service selected
Compose 文件中的服务都设置了 profiles,却没有启用匹配的 profile 时,up 可能报 no service selected。对比服务列表,按需启用 profile、指定服务,或恢复核心服务的默认启动方式。
Docker Compose 修改环境变量后,restart 仍使用旧值
Docker Compose 修改 environment 或 env_file 后,restart 不会更新已有容器的环境。区分最终配置、容器环境与应用行为,再重建指定服务,并核对数据保留和回退条件。
Docker 构建镜像时报 repository name must be lowercase
Docker 镜像仓库路径中的字母必须小写,标签则可以包含大写字母。核对 Compose 展开后的 image 值,只修正仓库路径,并保留构建、推送和部署使用的标签一致性。
Docker Compose 报 env_file.0 must be a string:旧版本不支持可选环境文件
Compose 在读取 env_file 时提示列表元素必须是字符串,可能是旧解析器不支持 path 和 required。确认实际入口与版本,更新插件,并避免临时路径列表改变可选文件语义。
Dependency-Track 前端启动时报 default.conf: Read-only file system
Dependency-Track 前端启用只读根文件系统后,envsubst 无法生成 default.conf。区分根文件系统与只读挂载,说明允许可写容器层时的调整方法、运行时配置检查,以及严格只读部署的边界。


