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

如何通过Docker Compose复制文件供Stoplight Prism访问?

解决Stoplight Prism Docker Compose路径匹配问题

问题根源

Stoplight Prism官方镜像的默认工作目录是/usr/src/prism/packages/cli,执行prism mock时,它会基于这个目录查找指定的API文档路径。你当前挂载./reference/:/app/,且Dockerfile将仓库复制到/app,但Prism实际在/usr/src/prism/packages/cli/app/目录下查找文件,路径不匹配导致报错。

解决方案

方案1:调整挂载路径匹配Prism查找目录

修改docker-compose.yaml的volumes配置,将本地reference目录直接挂载到Prism预期的路径下:

services:
  prism:
    # 保留原有镜像、端口等配置
    volumes:
      - ./reference/:/usr/src/prism/packages/cli/app/reference/
    command: prism mock app/reference/Offers/Offers-APIs.v1.json

本地reference文件夹会被映射到Prism工作目录下的app/reference,与报错中的路径完全对应,Prism即可找到目标文件。

方案2:指定容器工作目录并修正命令路径

若希望保留/app作为文件存放目录,可在docker-compose.yaml中指定工作目录,同时调整prism mock的目标路径:

services:
  prism:
    # 保留原有镜像、端口等配置
    working_dir: /app
    volumes:
      - ./reference/:/app/reference/
    command: prism mock reference/Offers/Offers-APIs.v1.json

将工作目录切换到/app后,Prism会基于/app查找你指定的相对路径,挂载目录也能准确对应。

方案3:移除挂载,直接使用Dockerfile复制的文件

如果不需要实时修改API文档文件,可直接去掉volumes挂载配置——你的Dockerfile已将整个仓库复制到/app,此时直接使用容器内的绝对路径执行命令即可:

services:
  prism:
    # 保留原有镜像、端口等配置
    command: prism mock /app/reference/Offers/Offers-APIs.v1.json

这种方式无需挂载,直接使用镜像中已有的文件,避免路径冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:44:52