无法使用docker-compose在docker容器中运行命令
编辑 – 添加文件夹结构
我正在尝试使用docker-compose在docker容器中运行node.js应用程序,但是容器无法运行指定的命令并退出。
我正在运行docker-for-mac,17.09.0-ce-mac35(19611)
这是我的文件夹结构:
. ├── docker-compose.yml ├── backend/ │ ├── Dockerfile │ ├── package.json │ ├── (source files) ├── frontend/ │ ├── Dockerfile │ ├── package.json │ ├── (source files)
这是我的docker-compose
文件:
version: "3" services: ihm-backend: environment: - NODE_ENV=development build: ./backend volumes: - ./backend:/src ports: - "3000:3000" - "9222:9222" working_dir: /src command: - "./node_modules/.bin/nodemon --watch ./ --inspect=0.0.0.0:9222 --nolazy ./app.js"
这是我的Dockerfile
:
FROM node:6-alpine COPY ./package.json src/ COPY ./npm-shrinkwrap.json src/ RUN cd /src && npm install COPY . /src WORKDIR /src CMD ["./bin/www"]
请注意, docker-compose
文件将覆盖该命令。
当我运行它时,出现以下错误:
Cannot start service ihm-backend: oci runtime error: container_linux.go:265: starting container process caused "exec: \"./node_modules/.bin/nodemon --watch ./ --inspect=0.0.0.0:9222 --nolazy ./app.js\": stat ./node_modules/.bin/nodemon --watch ./ --inspect=0.0.0.0:9222 --nolazy ./app.js: no such file or directory"
我试图玩一下这个命令 – 当把它ls
或pwd
我得到了预期的输出。 但是,一旦我尝试使用npm
或者像ls ./node_modules
这样的文件系统,我会得到相同的错误。 另外,如果我只是启动容器到一个shell,我可以运行任何我想要的命令,包括npm
脚本
我发现了这个问题。 似乎在docker-compose
文件的command
属性中有空格有问题。 解决的办法是把它分解成这样的数组:
version: "3" services: ihm-backend: environment: - NODE_ENV=development build: ./backend volumes: - ./backend:/src ports: - "3000:3000" - "9222:9222" working_dir: /src command: - /src/node_modules/.bin/nodemon - --watch - ./ - --inspect=0.0.0.0:9222 - --nolazy - ./app.js
不知道这是否有帮助,但这是我用于我的节点应用程序,它的工作原理。
Dockerfile
FROM node:carbon # Create app directory WORKDIR /usr/src/app COPY package*.json ./ RUN npm install RUN npm install nodemon -g # Bundle app source COPY . .
docker-compose
web: build: . volumes: - ".:/src/app" ports: - "3000:3000" command: - "nodemon"
- 如何dockerize我的nodejs快递应用程序托pipe在亚马逊linux ami?
- 在编辑器中从Docker容器中的编译代码获取intellisense
- 将节点http请求发送到Docker Remote API – 无响应
- 从节点映像运行docker容器时找不到Npm
- 如何访问Docker容器中运行的kurento媒体服务器
- 我可以使用MongoDb驱动程序从node.js调用rs.initiate()和rs.Add()吗?
- 有没有一种简单的方法在Bitbucket Pipelines Docker容器中更改为非root用户?
- 如何基于GitHub webhook自动化Docker部署?
- 与Socket.io和Docker无法获得超过980个连接