我有一个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
当我启动docker映像时,日志仅指出:
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 :(得分:1)
制作一个名为 *
* @param str a string to be parsed.
* @param delim the delimiters.
* @param returnDelims flag indicating whether to return the delimiters
* as tokens.
* @exception NullPointerException if str is <CODE>null</CODE>
*/
public StringTokenizer(String str, String delim, boolean returnDelims) {
的文件夹,并将以下文件放入其中:
Dockerfile
./json-server
entrypoint.sh
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 []
./ json / [routes.json,db.json]
如果要传递或观看其他文件等,请在上方进行编辑。
然后在#!/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
中输入类似内容
docker-compose.json
答案 1 :(得分:0)
这里的问题似乎是您通过的事实:
command: --host 0.0.0.0 -w db.json -r routes.json -m server.js
这将在容器内运行,因此在本地安装json-server不会更改任何内容,如果您可以创建和映像并从vimagick / json-server开始 dockerfile就像:
FROM vimagick/json-server
...
并根据需要安装json-server