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

Docker Compose挂载package.json失败:无法同步文件的问题排查

问题:挂载本地package.json到Parse Server容器失败(类型不匹配)

使用Docker Compose部署Parse Server与MongoDB时,尝试通过volumes将本地./parse-server/package.json挂载到容器内/parse-server/package.json路径,执行docker-compose up -d server启动服务失败,报错提示挂载类型不匹配。

配置文件

version: '3.9'

services:
  database:
    image: mongo:3.6
    restart: on-failure
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_USERNAME: admin
      MONGO_INITDB_ROOT_PASSWORD: admin
    volumes:
      - mongo_data:/data/db

  server:
    restart: on-failure
    image: parseplatform/parse-server:5.2.3
    ports:
      - 1337:1337
      - 9229:9229
    environment:
      - PARSE_SERVER_APPLICATION_ID=$SERVER_APPLICATION_ID
      - PARSE_SERVER_APPLICATION_NAME=$SERVER_APPLICATION_NAME
      - PARSE_SERVER_MASTER_KEY=$SERVER_MASTER_KEY
      - PARSE_SERVER_DATABASE_URI=mongodb://admin:admin@mongo/parse_server?authSource=admin
      - PARSE_SERVER_MOUNT_GRAPHQL=true
      - PARSE_SERVER_CLOUD=/parse-server/cloud/main.js
      - PARSE_SERVER_GRAPH_QLSCHEMA=/parse-server/cloud/schema_2.graphql
    links:
      - database:mongo
    depends_on:
      - database
    entrypoint: "node --inspect=0.0.0.0:9229 /parse-server/bin/parse-server"
    volumes:
      - parse_server_cloud:/parse-server/cloud
      - ./parse-server/package.json:/parse-server/package.json
volumes:
  mongo_data:
  parse_server_cloud:
    driver: local
    driver_opts:
      type: none
      device: ./parse-server/cloud
      o: bind

启动命令

docker-compose up -d server 

报错信息

ERROR: for 043a399a1ce9_docker_server_1 Cannot start service server:
failed to create shim task: OCI runtime create failed: runc create
failed: unable to start container process: error during container
init: error mounting "PRJ_PATH/docker/parse-server/package.json" to
rootfs at "/parse-server/package.json": mount
PRJ_PATH/docker/parse-server/package.json:/parse-server/package.json
(via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are
you trying to mount a directory onto a file (or vice-versa)? Check if
the specified host path exists and is the expected type

ERROR: for server Cannot start service server: failed to create shim
task: OCI runtime create failed: runc create failed: unable to start
container process: error during container init: error mounting
"PRJ_PATH/docker/parse-server/package.json" to rootfs at
"/parse-server/package.json": mount
PRJ_PATH/docker/parse-server/package.json:/parse-server/package.json
(via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are
you trying to mount a directory onto a file (or vice-versa)? Check if
the specified host path exists and is the expected type ERROR:
Encountered errors while bringing up the project.

容器内ls -l输出

total 648
drwxr-xr-x    1 root     root            70 Jun 17  2022 bin
drwxrwxrwx    1 node     node           384 Mar 27 07:42 cloud
drwxr-xr-x    1 root     root             0 Mar 27 06:59 config
drwxr-xr-x    1 root     root           916 Jun 17  2022 lib
drwxr-xr-x    1 node     node           110 Mar 27 06:59 logs
drwxr-xr-x    1 root     root          7818 Jun 17  2022 node_modules
-rw-r--r--    1 root     root        654393 Jun 17  2022 package-lock.json
-rw-r--r--    1 root     root          6289 Jun 17  2022 package.json
drwxr-xr-x    1 root     root           280 Jun 17  2022 public_html
drwxr-xr-x    1 root     root            30 Jun 17  2022 views

解决方案

问题根源

报错明确指出:你试图挂载的本地路径PRJ_PATH/docker/parse-server/package.json是目录,但容器内目标路径/parse-server/package.json是文件,挂载类型不匹配导致失败。

可能的触发原因:

  • 本地误将./parse-server/package.json创建成了目录,而非文件;
  • 本地./parse-server目录下不存在package.json文件,Docker尝试挂载时自动生成了同名目录。

修复步骤

  1. 检查并修正本地路径类型
    进入本地PRJ_PATH/docker/parse-server目录,执行命令确认路径类型:

    ls -ld package.json
    

    若输出显示为目录(以drwxr-xr-x开头),则删除该目录并创建正确的文件:

    rm -rf package.json
    # 可从容器复制默认package.json,或自行编写
    docker cp <容器ID>:/parse-server/package.json ./parse-server/
    
  2. 移除不必要的挂载(推荐)
    直接从容器的volumes配置中删除- ./parse-server/package.json:/parse-server/package.json这一行。从容器内ls输出可知,Parse Server镜像本身已自带package.json,若无特殊定制需求,无需挂载替换。

  3. 确保挂载路径存在
    若确实需要自定义package.json,必须确保本地文件已存在后再启动容器——Docker不会自动创建文件类型的挂载目标。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:17:03