2

我有带有文件的流星应用程序mup.js。mongo数据库的端口同样设置为27018。

module.exports = {
  servers: {
    ...
  },

  meteor: {
    ...

    env: {
      PORT: 3000,
      ROOT_URL: 'http://app.com',
      MONGO_URL: 'mongodb://localhost:27018/meteor',
    },

    docker: {
      image: 'abernix/meteord:base',
      imagePort: 9090, // (default: 80, some images EXPOSE different ports)
    },

    ...
  },

  mongo: {
    port: 27018,
    version: '3.4.1',
    servers: {
      ...
    }
  }
};

我想在端口 27018 上有 mongo,因为在服务器上,端口 27017 上有 mongo。但是当我输入:

 mup setup

我得到:

    -----------------------------------STDERR----------------------------------- 
    Error response from daemon: Container 
bb3277bc8eb71f7dc943bee81b429e0ff0343e5905f6695ed2c7cad2b562317f is not 
running     docker: Error response from daemon: driver failed programming 
external connectivity on endpoint mongodb 
(fd60247139585238bfa24a42d2fd6221c08e2d2a053d4d03ffedbbab5604fd9a): Error 
starting userland proxy: listen tcp 127.0.0.1:27017: bind: address already in
 use.   
-----------------------------------STDOUT-----------------------------------

        3.4.1: Pulling from library/mongo   Digest: 
sha256:aff0c497cff4f116583b99b21775a8844a17bcf5c69f7f3f6028013bf0d6c00c     
Status: Image is up to date for mongo:3.4.1     mongodb     mongodb     
Running mongo:3.4.1     
7dcf91a6f136d85a884323c0a1230a673d8f25a9197dc85738e44e30139c6035    
----------------------------------------------------------------------------

如何确保使用端口 27018 而不是 27017?

4

1 回答 1

1

Meteor github 中有一个与您想要做的事情相关的问题。不幸的是,嵌入式 mongo 端口似乎还不能配置。如果你设置 MONGO_URL 环境变量,Meteor 不会启动一个 mongo 实例,它只会尝试连接到给定的 url。

如果您希望 mongo 为您启动一个 mongo 实例,它将在默认端口上执行,即流星端口 + 1。从meteor help run文档中:

--port, -p 要监听的端口(而不是默认的 3000)。还使用端口 N+1 和 --app-port 指定的端口。指定为 --port=host:port 以绑定到特定接口。

因此,如果您在默认 (3000) 端口上运行流星应用程序,您将在 3001 上拥有一个 mongo 实例。

如果您需要在特定端口上有一个 mongo 实例,您唯一的其他选择是单独部署数据库。以下是一些关于如何对您的 mongo 部署进行 dockerize 的文档: https ://docs.docker.com/engine/examples/mongodb/

通过一些工作,您可以编写一个 dockerfile,您的 mup 可以使用它来部署 mongo 实例和您的应用程序。

希望有帮助。

于 2017-06-16T12:11:51.850 回答