Meteor 使用 MUP 部署,我的集合没有部署

Posted

技术标签:

【中文标题】Meteor 使用 MUP 部署,我的集合没有部署【英文标题】:Meteor deploy with MUP, my collections are not deployed 【发布时间】:2015-07-16 07:40:29 【问题描述】:

我使用流星创建我的应用程序,并使用 MUP 将其部署在我自己的服务器中。这 部署成功,但数据库没有我的收藏。

我在文件lib/collections/name_collection.js 中定义了集合。这是文件的示例:

campaigns = new Mongo.Collection("campaigns");
campaigns.initEasySearch(['name','startDate','endDate']);

campaigns.newSchema=function()
    return new SimpleSchema(
        name:
            type: String,
            label: 'Nome'
        ,
        startDate:
            type: 'datetime',
            label: 'Data inizio'
        ,
        endDate:
            type: 'datetime',
            label: 'Data fine'
        
    );
;
campaigns.editSchema=function()
    return new SimpleSchema(
        c_id:
            type: String,
            label: 'id'
        ,
        editName:
            type: String,
            label: 'Nome'
        ,
        editStartDate:
            type: 'datetime',
            label: 'Data inizio'
        ,
        editEndDate:
            type: 'datetime',
            label: 'Data fine'
        
    );
;

SimpleSchema.messages(
    "required name": "Il [label] è richiesto",
    "required startDate": "La [label] è richiesto",
    "required endDate": "La [label] è richiesto"
);

campaigns.allow(
    insert: function (userId, doc) 
        // the user must be logged in, and the document must be owned by the user
        return (userId && doc.user === userId);
    ,
    update: function (userId, doc, fields, modifier) 
        // can only change your own documents
        return doc.user === userId;
    ,
    remove: function (userId, doc) 
        // can only remove your own documents
        return doc.user === userId;
    ,
    fetch: ['user']
);

campaigns.deny(
    update: function (userId, docs, fields, modifier) 
        // can't change owners
        return _.contains(fields, 'owner');
    
);

和 mup.json 文件:


  // Server authentication info
  "servers": [
    
      "host": "168.235.151.xxx",
      "username": "dvterritorg", // develop user
      "password": "xxxxxx"
      // or pem file (ssh based authentication)
      //"pem": "~/.ssh/id_rsa"


    
  ],

  // Install MongoDB in the server, does not destroy local MongoDB on future setup
  "setupMongo": true,

  // WARNING: Node.js is required! Only skip if you already have Node.js installed on server.
  "setupNode": true,

  // WARNING: If nodeVersion omitted will setup 0.10.36 by default. Do not use v, only version number.
  "nodeVersion": "0.10.36",

  // Install PhantomJS in the server
  "setupPhantom": true,

  // Application name (No spaces)
  "appName": "dvterritorg",

  // Location of app (local directory)
  "app": ".",

  // Configure environment
  "env": 
    "ROOT_URL": "http://dv.xxxxxx.it",
    //"MONGO_URL": "mongodb://dvterritorg:xxxxxx@127.0.0.1/dvterritorg",
    "METEOR_ENV": "production"
  ,

  // Meteor Up checks if the app comes online just after the deployment
  // before mup checks that, it will wait for no. of seconds configured below
  "deployCheckWaitTime": 60

我尝试在meteor.com 和compose.io 中进行部署,但结果是一样的。

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

这符合预期。 Mongo 是一个 NoSQL 数据库。只要您将数据插入其中,就会生成集合。您的数据库没有数据,因此没有集合。任何 mongo 数据库也是如此,例如通过 mup deploy 托管的 meteor.com (如果您使用 compose 或上面脚本中的本地数据库)。

MUP 或meteor deploy,如果您有意,请不要上传本地数据库的内容。您必须自己使用 mongodumpmongorestore 执行此操作:https://docs.compose.io/backups/mongodump-mongorestore.html

您可以从mongodb.org 获取 mongorestore 和 mongodump 二进制文件

您可以转储本地数据库(如果您在端口 3000 上运行流星 - 添加一个):

mongodump --port 3001

这会创建 dump 文件夹,您可以使用 mongorestore 进行恢复,这可能需要更多身份验证详细信息,如上面 compose.io 文章中所述。

【讨论】:

以上是关于Meteor 使用 MUP 部署,我的集合没有部署的主要内容,如果未能解决你的问题,请参考以下文章

部署到Digital Ocean时,使用docker和mongodb的Mup错误

抛砖引玉:使用docker对Meteor应用进行产品级部署(入门篇)

从 docker 容器连接到主机 mongodb

Meteor build 在部署到 Heroku 时中断

在 Windows 上部署 Meteor

使用 Docker 和 phusion-passenger 部署 Meteor 应用程序