我是docker的新手,我正在尝试使用docker-compose来启动节点应用程序容器,并且在启动节点应用程序时我不断收到错误,并且我不了解当前上下文中的路径如何工作撰写提起容器。 这是我的Dockerfile
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-compose进行路径上下文以及如何调试它。
这是我得到的错误:
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)
感谢您的帮助
安娜