我正在关注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
。
该文件位于我的项目文件夹中, 那里有内容。我无法弄清楚为什么这个设置不起作用,我做了类似的尾部设置,它工作正常。
谁能告诉我这里我做错了什么?
答案 0 :(得分:1)
无论你在撰写文件中加载什么:
- .:/home/app/cardcreator
将挂载在Dockerfile中$HOME/cardcreator/
中构建的任何内容之上。
所以基本上你似乎有相互冲突的卷 - 这是一个操作问题的顺序 - 构建将首先发生,并且容器运行后会发生卷安装,因此您的容器将无法再访问这些文件内置在Dockerfile中。
答案 1 :(得分:0)
您可以尝试使用
docker exec -it app_1 bash
进入容器,尝试执行
node index.js
手动命令,看看发生了什么。不是100%确定'节点' docker图像虽然安装了bash ..