如何在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,不好意思:(