为什么`docker-compose up`抛出了一个错误,其中`docker run`工作流畅

时间:2017-05-17 10:18:36

标签: node.js docker docker-compose

我正在努力建立一个发展环境&使用Docker生成NodeJS应用程序。对于开发环境,我尝试使用nodemon运行应用程序(因为这会监视文件更改)。但是当我尝试使用docker-compose up运行它时,我收到以下错误:

错误:for web无法启动服务web:oci运行时错误:container_linux.go:247:启动容器进程导致“exec:\”nodemon \“:$ PATH中找不到可执行文件”

当我运行docker run web-app时(使用docker build -t web-app .生成网络应用图片我完全没有问题。我想知道这种不同的行为是如何发生的,以及如何解决它。我把我得到的文件放在了解问题的基础上。

Dockerfile

FROM node:latest

# Install nodemon globally
RUN npm i nodemon -g

# Add local directory to /node/web-app
ADD . /node/web-app
# Switch to /node/web-app
WORKDIR /node/web-app

# Install NPM dependencies
RUN npm install

# Run nodemon
CMD ["nodemon", "."]

搬运工-compose.yml

version: '2'
services:   
web:
    build:
      context: .
      dockerfile: Dockerfile
   command:
     - nodemon .

1 个答案:

答案 0 :(得分:-1)

所以,看到你的评论。我意识到问题是什么。 docker-compose.yml中的command: nodemon . 指令不应该是列表。

将其写为字符串:

command:
  - nodemon
  - .

但是,由于在Dockerfile中已经声明了相同的命令,因此根本不需要将它放在docker-compose.yml中

编辑:可以将命令编写为列表,但是您需要查看每个参数:

var groupedData = [];
_(typeData).groupBy('item').forEach(function(value, key) {
  var obj = {};  
  obj.count = value.length;
  obj.type = value[0].type;
  obj.details = value[0].details;
  obj.description = key;
  groupedData.push(obj);
});