如何在ovh托pipe上使用docker-compose

今天在Docker周围工作已经很漫长了,我仍然无法在我的OVH VPS中正确运行docker-compose。
我正在使用mongodb开发一个小型的nodeJS应用程序。 我的configuration在我的电脑上运行(Windows 7),但是当我把它推到我的VPS上时,结果并不如预期的那样…

我的docker-compose.yml

db: image: mongo ports: - "27017:27017" command: "--smallfiles --logpath=/dev/null" web: build: . volumes: - .:/app ports: - "3000:3000" links: - db environment: PORT: 3000 

我的Dockerfile(nodeJS部分)

 FROM node:onbuild WORKDIR /app ADD package.json /app/package.json RUN npm install && npm ls RUN mv /app/node_modules /node_modules EXPOSE 3000 CMD [ "node", "server.js" ] 

我的nodeJS服务器

 var mongoose = require('mongoose'); var express = require('express'); var MONGO_DB; var DOCKER_DB = process.env.DB_PORT; if ( DOCKER_DB ) { MONGO_DB = DOCKER_DB.replace( 'tcp', 'mongodb' ) + '/app'; } else { MONGO_DB = process.env.MONGODB; } var retry = 0; mongoose.connect(MONGO_DB); const app = express(); app.get('/', function (req, res) { res.send('Hello world\n'); }); app.listen(process.env.PORT || 3000); 

我的服务器上的docker版本(unbuntu 14.04)

 Client: Version: 1.11.1 API version: 1.23 Go version: go1.5.4 Git commit: 5604cbe Built: Tue Apr 26 23:30:23 2016 OS/Arch: linux/amd64 Server: Version: 1.11.1 API version: 1.23 Go version: go1.5.4 Git commit: 5604cbe Built: Tue Apr 26 23:30:23 2016 OS/Arch: linux/amd64 

当我运行:

 docker-compose up -d --build 

所有工作正常,但最后只有mongo容器正在运行,NodeJS停止。

任何人有一个想法?
谢谢

我find了解决scheme! MyDockerfile看起来像这样

 FROM node:onbuild # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Install app dependencies COPY package.json /usr/src/app/ RUN npm install # Bundle app source COPY . /usr/src/app EXPOSE 3000 CMD [ "node", "server.js" ] 

docker-compose.yml

 db: image: mongo ports: - "27017:27017" web: build: . volumes: - .:/app ports: - "3000:3000" links: - db 

所有现在正常工作:)

你的server.js文件和Dockerfile在同一个目录Dockerfile吗? 我认为问题是server.js也必须在WORKDIR 。 而且我认为你正在将代码复制到这个容器上,使用CP而不是RUN mv 。 尝试这个:

 FROM node:onbuild WORKDIR /app ADD package.json /app/package.json RUN npm install && npm ls COPY /app/node_modules /node_modules ADD server.js /app/server.js # add this line EXPOSE 3000 CMD [ "node", "server.js" ] 

更新它:我错误地写了CP而不是正确的COPY,不好意思:(