Node.js docker compose在启动nodejs应用程序docker容器时出错

Node.js docker compose在启动nodejs应用程序docker容器时出错,node.js,docker,docker-compose,Node.js,Docker,Docker Compose,我是docker新手,我正在尝试使用docker compose来启动节点应用程序容器,当它启动节点应用程序时,我不断出错,我不明白docker compose启动容器时当前上下文中的路径是如何工作的。 这是我的文件 FROM node:4.7 MAINTAINER anna RUN mkdir -p /bbb/abc ADD build /bbb/abc/ ADD package.json /bbb/abc/ RUN mkdir -p /var/log/abc RUN cd /bbb/abc

我是docker新手,我正在尝试使用docker compose来启动节点应用程序容器,当它启动节点应用程序时,我不断出错,我不明白docker compose启动容器时当前上下文中的路径是如何工作的。 这是我的文件

FROM node:4.7
MAINTAINER anna

RUN mkdir -p /bbb/abc
ADD build /bbb/abc/
ADD package.json /bbb/abc/
RUN mkdir -p /var/log/abc
RUN cd /bbb/abc/ && \
  npm install --production && \
  rm package.json


EXPOSE 3080
ENV NODE_ENV=production

WORKDIR /bbb/abc/server/
CMD ["node","app.js"]
这是我的docker-compose.yml

version: '2'

services:
  abc:
    image: bbb-abc-n
    container_name: abc
    restart: unless-stopped
    working_dir: /bbb/abc/server/
    ports:
      - "3080:3080"
    environment:
      - NODE_ENV=production
      - NODE_PATH=/bbb/abc/server/
      - WORKDIR=/bbb/abc/server/
    volumes:
      - /var/log/abc:/var/log/bis/bcs
然后我做一个构建

> docker build -t bbb-abc-n
然后,若我运行docker run,那个么容器将启动,节点应用程序将正确启动,如下所示

> docker run -p 3080:3080 --name abc -d bbb-abc-n
这正如我所预料的那样效果很好

但是,如果我使用docker compose来启动容器,如下所示:

> docker-compose up
我得到了下面的错误,我不明白docker的路径上下文是如何组成的,以及如何调试它

这是我得到的错误:

Error: Cannot find module '../appconfig/production.json'
abc    |     at Function.Module._resolveFilename (module.js:325:15)
abc    |     at Function.Module._load (module.js:276:25)
abc    |     at Module.require (module.js:353:17)
abc    |     at require (internal/module.js:12:17)
abc    |     at Object.<anonymous> (/bis/bcs/server/utils/logger.js:6:17)
abc    |     at Module._compile (module.js:409:26)
abc    |     at Object.Module._extensions..js (module.js:416:10)
abc    |     at Module.load (module.js:343:32)
abc    |     at Function.Module._load (module.js:300:12)
abc    |     at Module.require (module.js:353:17)
abc    |     at require (internal/module.js:12:17)
错误:找不到模块“../appconfig/production.json”
abc | at Function.Module._解析文件名(Module.js:325:15)
abc | at Function.Module._load(Module.js:276:25)
abc | at Module.require(Module.js:353:17)
abc |按要求(内部/模块js:12:17)
abc | at Object。(/bis/bcs/server/utils/logger.js:6:17)
abc | at Module._编译(Module.js:409:26)
abc | at Object.Module._extensions..js(Module.js:416:10)
abc | at Module.load(Module.js:343:32)
abc | at Function.Module._load(Module.js:300:12)
abc | at Module.require(Module.js:353:17)
abc |按要求(内部/模块js:12:17)
谢谢你的帮助


Anna

只是一个猜测,根据这个
/bis/bcs/server/utils/logger.js
您尝试加载记录器配置。可能您将其路径定义为
。/blah/blah
尝试将其更改为
uu dirname+/../blah/blah
或使用
路径。解决
谢谢Nazar。然而,它仍然不适合我。