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

远程VM中Docker挂载文件变为空目录的问题求助

问题分析

当Docker绑定挂载文件时,如果源路径不存在,Docker会自动创建一个空目录作为挂载目标——这就是你在远程VM上看到空目录的核心原因:你的mock-config.yaml没有同步到目标VM的工作目录中。

以下是几种可行的解决方案:

1. 在CI/CD流程中提前同步配置文件到远程VM

在执行docker-compose up之前,先把本地的mock-config.yaml同步到远程VM的对应项目目录下。具体操作根据你使用的CI/CD工具调整:

  • 若用GitHub Actions:在run步骤中用scp上传文件,示例命令:
    scp ./mock-config.yaml your-user@remote-vm-ip:/path/to/your/project/
    
  • 若用GitLab CI:借助rsync或CI内置的文件传输能力,确保文件在docker-compose启动前已经存在于VM的工作目录。

2. 将配置内容直接嵌入docker-compose配置

不需要依赖外部文件,直接把mock-config.yaml的内容写入到populate-smocker服务的entrypoint中,通过here-doc传递给curl:

populate-smocker:
    image: curlimages/curl:8.3.0
    depends_on:
      mockserver:
        condition: service_started
    entrypoint:
      - /bin/sh
      - -c
      - |
        curl -X POST --data-binary @- http://mockserver:3001/mocks -H "Content-Type: application/x-yaml" << 'EOF'
        # 这里粘贴你的mock-config.yaml完整内容
        mock-example:
          request:
            path: /api/test-endpoint
          response:
            status: 200
            body: "{\"result\":\"success\"}"
        EOF

这种方式完全消除了对本地文件的依赖,适合CI/CD环境中文件传输不便的场景。

3. 构建包含配置文件的自定义curl镜像

创建一个极简Dockerfile,把mock-config.yaml打包到curl镜像中:

FROM curlimages/curl:8.3.0
COPY mock-config.yaml /work/mock-config.yaml

在CI/CD流程中构建该镜像(可推送到私有仓库,或直接在VM上本地构建),再修改docker-compose配置使用这个自定义镜像:

populate-smocker:
    image: your-custom-curl-image:latest
    depends_on:
      mockserver:
        condition: service_started
    entrypoint:
      - /bin/sh
      - -c
      - 'curl -X POST --data-binary "@/work/mock-config.yaml" http://mockserver:3001/mocks -H "Content-Type: application/x-yaml"'

这种方式适合配置文件需要复用的场景,无需每次执行都传递文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:13:29