簡體   English   中英

如何在 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 容器在運行,NodeJS 停止。

有人有想法嗎?

我找到了解決方案! 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位於同一目錄中? 我認為問題在於 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,對不起 :(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM