【问题标题】:How to use docker-compose on ovh hosting如何在 ovh 主机上使用 docker-compose
【发布时间】:2016-08-31 11:22:57
【问题描述】:

我仍然无法在我的 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 已停止。

有人有想法吗?

【问题讨论】:

    标签: node.js mongodb docker docker-compose ovh


    【解决方案1】:

    我找到了解决办法! 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
    

    现在一切正常:)

    【讨论】:

    • 那个帮助,有同样的问题....看起来路径有问题- .:/app
    【解决方案2】:

    您的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,对不起 :(

    【讨论】:

    • 我试过你的解决方案,但结果还是一样。没有找到“CP”命令,所以我保留了旧行。
    • 对不起,它应该是COPY而不是CP,我更新了我的答案,我的错
    • 我尝试使用 COPY 也失败了。基本上 docker-compose 没有安装在 OVH 的 VPS 上。即使可以安装它,也许我们不能使用它......此外,我找到了 OVH 提供的一些教程,它解释了如何在没有 docker-compose 的情况下设置三个容器。
    • 哦,我以为你在 ovh 上运行了 docker-compose,
    猜你喜欢
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2022-01-24
    相关资源
    最近更新 更多