如何通过 mup 更改流星部署中 mongo 的端口?
How to change port of mongo in meteor deployment by mup?
我有文件 mup.js
的 meteor 应用程序。 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?
Meteor github 中有一个 issue 与您要执行的操作相关。不幸的是,嵌入式 mongo 端口似乎还不可配置。如果你设置了 MONGO_URL 环境变量,Meteor 将不会启动 mongo 的实例,它只会尝试连接给定的 url。
如果您希望 mongo 为您启动一个 mongo 的实例,它将在默认端口上执行,即 meteor 端口 + 1。
来自 meteor help run
文档:
--port, -p Port to listen on (instead of the default 3000). Also
uses port N+1 and a port specified by --app-port.
Specify as --port=host:port to bind to a specific interface.
因此,如果您 运行 默认 (3000) 端口上的 meteor 应用程序,您将在 3001 上有一个 mongo 实例。
如果您需要在特定端口上有一个 mongo 实例,您唯一的选择是单独部署数据库。以下是一些关于如何对 mongo 部署进行 docker 化的文档:
https://docs.docker.com/engine/examples/mongodb/
通过一些工作,您可以编写一个 dockerfile,您的 mup 可以使用它来部署 mongo 实例和您的应用程序。
希望对您有所帮助。
我有文件 mup.js
的 meteor 应用程序。 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?
Meteor github 中有一个 issue 与您要执行的操作相关。不幸的是,嵌入式 mongo 端口似乎还不可配置。如果你设置了 MONGO_URL 环境变量,Meteor 将不会启动 mongo 的实例,它只会尝试连接给定的 url。
如果您希望 mongo 为您启动一个 mongo 的实例,它将在默认端口上执行,即 meteor 端口 + 1。
来自 meteor help run
文档:
--port, -p Port to listen on (instead of the default 3000). Also uses port N+1 and a port specified by --app-port. Specify as --port=host:port to bind to a specific interface.
因此,如果您 运行 默认 (3000) 端口上的 meteor 应用程序,您将在 3001 上有一个 mongo 实例。
如果您需要在特定端口上有一个 mongo 实例,您唯一的选择是单独部署数据库。以下是一些关于如何对 mongo 部署进行 docker 化的文档: https://docs.docker.com/engine/examples/mongodb/
通过一些工作,您可以编写一个 dockerfile,您的 mup 可以使用它来部署 mongo 实例和您的应用程序。
希望对您有所帮助。