如何为子目录下的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
相关产品推荐
相关产品推荐

