【问题标题】:Deploying to Heroku with LoopBack buildpack overwrites my changes to LoopBack code使用 LoopBack buildpack 部署到 Heroku 会覆盖我对 LoopBack 代码的更改
【发布时间】:2016-10-25 02:29:06
【问题描述】:

我在 Heroku 中使用 buildpack 部署我的 LoopBack 项目:

https://github.com/strongloop/strongloop-buildpacks.git

但是,我对 LoopBack 用户模型进行了一些更改(具体来说,我更改了 ACL 以拒绝 $everyone 对用户创建的访问),当我在 Heroku 中部署它时,这些更改将被默认值覆盖(即ACL 允许 $everyone 发布到 /Users)

我的猜测是,当在 Heroku 中部署时,我的更改会先放置,然后再安装 buildpack,因此对 LB 源代码的任何更改都会被覆盖。

有什么方法可以更改 LoopBack 源代码并部署到 Heroku?

我是否必须使用我的更改创建自己的 buildpack?有关如何创建 buildpack 的任何推荐资源?

谢谢!

【问题讨论】:

    标签: heroku loopbackjs strongloop buildpack


    【解决方案1】:

    经过一些研究,我对失败原因的假设似乎是正确的。事实证明,更改被覆盖的原因确实是因为 buildpack 将所有内容安装在您提交给 Heroku 应用程序的任何项目结构之上。

    就我而言,由于我的更改涉及更改 StrongLoop 的文件,因此无论何时安装 SL buildpack,这些更改都会丢失。

    解决方案:

    我解决此问题的方法是分叉StrongLoop's buildpack,然后在bin/compile 文件中添加几行以使用sed 删除允许任何人(“$everyone”角色)发布新的ACL 条目用户实例:

    status "Removing CREATE permissions for User model"
    sed '42,47d' $build_dir/node_modules/loopback/common/models/user.json > $build_dir/node_modules/loopback/common/models/user.tmp
    mv $build_dir/node_modules/loopback/common/models/user.tmp $build_dir/node_modules/loopback/common/models/user.json
    

    (link to the position of the lines is here)

    在我使用的 SL 版本中,删除了以下几行:

     },
     {
       "principalType": "ROLE",
       "principalId": "$everyone",
       "permission": "ALLOW",
       "property": "login"
    

    (link to GitHub lines here)

    然后我使用这个新的 buildpack 创建了一个新的 Heroku 应用程序,该应用程序现在禁止通过“$everyone”角色创建新用户。

    注意事项

    这当然是一种非常粗略的方法,我认为正确的方法是实际分叉 StrongLoop 存储库,在那里进行更改,然后使用安装分叉存储库的 buildpack,但是在我的情况意味着我必须注意提交给原始 StrongLoop 存储库的修复并将它们合并回来,这对于我需要的小改动来说似乎是不必要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      相关资源
      最近更新 更多