代码之家  ›  专栏  ›  技术社区  ›  physicsboy

无法启动docker映像-“找不到模块json服务器”

  •  0
  • physicsboy  · 技术社区  · 7 年前

    我有一个docker compose试图开始这张图片 vimagick/json-server 不过,我添加了一些略多于文档中显示的默认案例的内容,选择传递我自己的服务器文件。

    json-server:
        image: vimagick/json-server
        command: --host 0.0.0.0 -w db.json -r routes.json -m server.js
        ports:
          - "3000:3000"
        volumes:
          - ./support/json-server/db.json:/data/db.json
          - ./support/json-server/routes.json:/data/routes.json
          - ./support/json-server/server.js:/data/server.js
        restart: always
    

     Loading server.js
    { Error: Cannot find module 'json-server'
        at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
        at Function.Module._load (internal/modules/cjs/loader.js:562:25)
        at Module.require (internal/modules/cjs/loader.js:690:17)
        at require (internal/modules/cjs/helpers.js:25:18)
        at Object.<anonymous> (/data/server.js:1:20)
    

    我已经检查了json服务器是否安装在本地,但由于某种原因,它无法正常工作。

    任何想法都会受到欢迎。

    0 回复  |  直到 7 年前
        1
  •  1
  •   Lawrence Cherone    7 年前

    制作一个名为 ./json-server 并在其中放置以下文件:

    Dockerfile

    FROM node:lts-slim
    
    RUN npm install -g json-server
    
    WORKDIR /data
    VOLUME /data
    
    EXPOSE 3000
    ADD entrypoint.sh /entrypoint.sh
    ENTRYPOINT ["bash", "/entrypoint.sh"]
    CMD []
    

    入口点。嘘

    #!/bin/bash
    
    args="$@"
    
    args="$@ --host 0.0.0.0 --port 3000"
    
    file=/data/db.json
    if [ -f $file ]; then
        echo "Found $file"
        args="$args --watch $file"
    fi
    
    echo "json-server $args"
    
    json-server $args
    

    ./json/[routes.json,db.json]

    如果你想传递或观看其他文件等,请编辑上面的内容。

    然后进来 docker-compose.json 是这样的

    json-server:
       build: ./json-server
       volumes:
         - ./json-server/json/:/data
       ports:
         - 3000:3000
    
        2
  •  0
  •   Montassar Bouajina    7 年前

    这里的问题似乎是你通过了:

     command: --host 0.0.0.0 -w db.json -r routes.json -m server.js
    

    这将在容器中运行,因此在本地安装json服务器不会改变任何事情,如果您愿意,可以创建和镜像并从vimagick/json服务器开始 dockerfile类似于:

    FROM vimagick/json-server
     ...
    

    并在需要时安装json服务器

    推荐文章