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

Docker Compose中如何正确配置主机Bind Mount?

正确配置Docker Compose的Bind Mount

你之前的配置错误核心在于两点:

  • Bind Mount的配置位置错误:应该放在services下对应服务的volumes字段内,而非顶层的volumes块(顶层volumes块用于定义命名卷,不是Bind Mount)
  • YAML格式不符合语法要求:不管是短格式还是长格式,都要严格遵循YAML的映射/列表语法

以下是两种正确的配置方式:

方式1:短格式(推荐,简洁直观)

直接使用主机绝对路径:容器内路径的格式,在服务的volumes字段下添加挂载规则:

version: "3.8"
services:
  srv1:
    build:
      context: /opt/P01_SH/Dockerfiles/
      dockerfile: /opt/P01_SH/Dockerfiles/Dockerfile
    volumes:
      # 短格式:主机路径:容器路径
      - /opt/Test_Data/:/test-data

方式2:长格式(适合需要额外参数的场景)

如果需要设置只读挂载等额外参数,可使用长格式的映射写法,注意YAML的缩进规范:

version: "3.8"
services:
  srv1:
    build:
      context: /opt/P01_SH/Dockerfiles/
      dockerfile: /opt/P01_SH/Dockerfiles/Dockerfile
    volumes:
      # 长格式:明确指定挂载类型、主机源路径、容器目标路径
      - type: bind
        source: /opt/Test_Data/
        target: /test-data
        # 可选配置:设置为只读挂载
        # read_only: true

额外说明

  • 主机路径必须使用绝对路径,否则Docker会将其识别为命名卷而非Bind Mount
  • 你Dockerfile中的VOLUME /test-data仅用于声明容器内的挂载点,不会影响Bind Mount的配置,Bind Mount会直接覆盖该挂载点的内容
  • 原docker-compose文件中的两个顶层volumes块可完全删除,Bind Mount不需要在顶层定义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:18:27