Firebase Web应用程序

时间:2017-06-16 14:15:36

标签: firebase deployment firebase-hosting staging environments

我正在使用Firebase构建一个Web应用程序。目前我可以说我有两个阶段 - 开发,运行localhost的firebase serve和在Firebase托管上传Web应用程序的firebase deploy --only hosting

一切都很好,但我不认为这是一个专业的解决方案。我看到的问题是,我的本地环境和实时Web应用程序共享同一个数据库。我对这个主题做了很多研究,我明白在Firebase上每个项目都没有办法建立两个数据库。提供的解决方案是在Firebase上创建两个项目,一个用于开发,一个用于生产。或者即使你想要,也可以用于分期。

这个解决方案对我来说似乎完全没问题。这肯定是一个好主意。几个项目,对于几个环境,单独的数据库,只是完美。然后就在实施这个解决方案之前,另一个问题在我脑海中浮现。如果我说,让我们创建一个暂存项目,为了服务我作为临时环境,我决定部署我的Web应用程序,暂存Web应用程序将公开,因此它也将被Google编入索引等等。

那么,在这种情况下你能给我什么建议?如何确保我的暂存Web应用程序(托管在临时Firebase应用程序上)不可用于其他人,并且不会被搜索引擎编入索引。我想过白名单IP或VPC,但我不知道如何以免费可靠的方式进行。

2 个答案:

答案 0 :(得分:3)

1。使用多个数据库进行扩展

现在(3月2018年),Firebase允许您创建多个数据库实例。

正式文件:Scale with Multiple Databases

  1. 转到Firebase项目

  2. 在Firebase控制台中,转到Develop > Database部分的“数据”标签。 从数据库部分(右上角)的菜单中选择Create new database

  3. 自定义数据库引用和安全规则,然后单击“获取它”。

  4. (可选)修改新实例的Security ruleBackup option

  5. 2。使用

    // Get the default database instance for an app
    var database = firebase.database();
    
    // Get a secondary database instance by URL
    var database = firebase.database('https://testapp-1234.firebaseio.com');
    

    3。示例用法:不同的环境

    firebase-config.js

    const BUILD_LEVEL = "dev";
    // const BUILD_LEVEL = 'stage'
    // const BUILD_LEVEL = 'prod'
    
    let config = {
      apiKey: "your_apiKey",
      authDomain: "your_authDomain",
      projectId: "your_projectId",
      storageBucket: "your_storageBucket",
      messagingSenderId: "your_messagingSenderId"
    };
    
    if (BUILD_LEVEL === "dev") {
      config.databaseURL = "https://your-project-dev.firebaseio.com/";
    } else if (BUILD_LEVEL === "stage") {
      config.databaseURL = "https://your-project-stage.firebaseio.com";
    } else if (BUILD_LEVEL === "prod") {
      config.databaseURL = "https://your-project-dev.firebaseio.com";
    }
    
    firebase.initializeApp(config);
    

    现在要更改Firebase数据库实例,您只需要更改BUILD_LEVEL变量。

    将此功能与Git/Github/Gitlab workflowGit hookwebpackCI/CD tool相结合,您就拥有了非常灵活的解决方案。

答案 1 :(得分:0)

万一有人有这个问题,Firebase博客上会有一个article

注意:此Firebase文章假定您已经为此新环境(即project-dev)创建了第二个Firebase项目,并将配置详细信息复制到了您的工作环境(即project-dev)中。 Master和dev是两个不同的环境,因此具有两个不同的Firebase配置是很有意义的。

文章指出:

  

对我们来说幸运的是,Firebase CLI使设置和部署到多个环境变得简单。

     

使用Firebase CLI在环境之间添加和切换的方法如下   只需一个命令即可:firebase use

     

$ firebase use --add   此命令提示您从现有项目之一中进行选择

     

选择要用于其他环境的项目,然后为其命名。别名确实可以是您想要的任何名称,但是通常使用别名,例如“开发”,“临时”或“生产”。

     

创建新别名后,它将被设置为当前别名   部署环境。运行Firebase部署将部署您的   该应用程序。

     

切换环境

     

如果要切换到其他环境,只需在use命令中提供别名即可。

     

$ firebase use default#将环境设置为默认别名

     

$ firebase use staging#将环境设置为暂存别名

     

对于单个命令,还可以使用-P标志指定环境:

     

$ firebase deploy -P staging#部署到暂存别名

希望有帮助!