如何在 ovh 主机上使用 docker-compose
How to use docker-compose on ovh hosting
我仍然无法在我的 OVH VPS.
中正确 运行 docker-compose
我正在使用 mongodb 开发一个小型 nodeJS 应用程序。我的配置适用于我的 PC (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版本(Ubuntu 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 容器 运行ning 并且 NodeJS 停止了。
有人有想法吗?
您的 server.js
文件是否与 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,抱歉:(
我找到了解决办法!
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
现在一切正常:)
我仍然无法在我的 OVH VPS.
中正确 运行 docker-compose我正在使用 mongodb 开发一个小型 nodeJS 应用程序。我的配置适用于我的 PC (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版本(Ubuntu 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 容器 运行ning 并且 NodeJS 停止了。
有人有想法吗?
您的 server.js
文件是否与 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,抱歉:(
我找到了解决办法! 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
现在一切正常:)