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

如何为子目录下的docker-compose.yml指定根目录作为构建上下文?

解决方法

方案1:修改子目录下的docker-compose.yml配置(推荐,一次修改永久生效)

你之前报错的核心原因是默认构建上下文是docker-compose.yml所在的docker目录,此时dockerfile的相对路径会基于docker目录解析,导致路径拼接错误。只需要给每个服务的build字段手动指定上下文和dockerfile路径即可:

# docker/docker-compose.yml 示例配置
version: '3.8'
services:
  # 服务端配置示例
  server:
    build:
      context: ../ # 上下文指定为docker目录的上级,也就是项目根目录
      dockerfile: ./docker/server/Dockerfile # dockerfile路径相对于上面指定的上下文(项目根目录)
  # 测试器配置示例
  tests:
    build:
      context: ../
      dockerfile: ./docker/tests/Dockerfile
  # 数据库配置示例
  postgres:
    build:
      context: ../
      dockerfile: ./docker/postgres/Dockerfile

修改完成后,直接执行你之前的命令就能正常运行:
docker-compose -f docker/docker-compose.yml up

方案2:命令行临时指定项目目录

如果不想修改配置文件,可以在执行命令时加上--project-directory参数手动指定项目根目录为当前目录:
docker-compose -f docker/docker-compose.yml --project-directory . up

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:03