Docker没有找到我的index.js

时间:2016-08-06 13:52:36

标签: node.js docker docker-compose

我正在关注this guide并使用我的低docker知识来启动和运行开发环境。我撞墙了,我无法解决。这是我的docker-compose.yml

version: '2'
services:
  redis:
    image: redis:3.2
  mongo:
    image: mongo:3.2
  app:
    build: .
    ports:
      - '3000:3000'
    command: './node_modules/.bin/nodemon ./index.js'
    environment:
      NODE_ENV: development
    volumes:
      - .:/home/app/cardcreator
      - /home/app/cardcreator/node_modules
    depends_on:
      - redis
      - mongo
    links:
      - redis
      - mongo

这是我的Dockerfile

FROM node:6.3.1

RUN useradd --user-group --create-home --shell /bin/false app

ENV HOME=/home/app

COPY package.json npm-shrinkwrap.json $HOME/cardcreator/
RUN chown -R app:app $HOME/*

USER app
WORKDIR $HOME/cardcreator
RUN npm install

USER root
COPY . $HOME/cardcreator/
RUN chown -R app:app $HOME/*
USER app

CMD ["node", "index.js"]

当我尝试通过docker-compose up启动应用时,出现错误

app_1    |   Usage: nodemon [nodemon options] [script.js] [args]
app_1    |   See "nodemon --help" for more.

然后我删除了command的{​​{1}}行,只留下docker-compose.yml开始。我收到一条错误消息,指出无法找到node index.js

该文件位于我的项目文件夹中, 那里有内容。我无法弄清楚为什么这个设置不起作用,我做了类似的尾部设置,它工作正常。

谁能告诉我这里我做错了什么?

2 个答案:

答案 0 :(得分:1)

无论你在撰写文件中加载什么:

- .:/home/app/cardcreator

将挂载在Dockerfile中$HOME/cardcreator/中构建的任何内容之上。

所以基本上你似乎有相互冲突的卷 - 这是一个操作问题的顺序 - 构建将首先发生,并且容器运行后会发生卷安装,因此您的容器将无法再访问这些文件内置在Dockerfile中。

答案 1 :(得分:0)

您可以尝试使用

docker exec -it app_1 bash

进入容器,尝试执行

node index.js 
手动

命令,看看发生了什么。不是100%确定'节点' docker图像虽然安装了bash ..