Heroku 不再免费了,我还能如何部署我的 React/Node 应用程序? :(

Heroku 不再免费了,我还能如何部署我的 React/Node 应用程序? 😦

关于 Heroku 免费产品的重要信息

-_________-

是的,Heroku 不再免费了。遗憾的是,我在 Heroku 上托管了一堆随机的东西。我的大部分东西都由某种前端构建(通常是 React)和一个 Express 服务器组成,所有这些都部署到单个 Heroku Dyno。

我通常将 Express 配置为服务于静态前端构建并处理服务器请求。我认为这是一种非常常见的模式,并且已经在互联网上看到了它的引用。我最喜欢的描述这种模式的文章之一在这里:

[

将 React 和 Express 部署到 Heroku

你有一个 React 应用程序,以及一个用 Express 或其他东西编写的 API 服务器。现在——你如何将它们都部署到一个……

daveceddia.com

](https://daveceddia.com/deploy-react-express-app-heroku/)

另一篇优秀的文章展示了如何使用 Flask 应用程序和 React 前端来做到这一点:

[

如何部署 React + Flask 项目

欢迎来到我的“React + Flask”系列的第二部分。在这一集中,我们将把我们的项目部署在一个……

博客.miguelgrinberg.com

](https://blog.miguelgrinberg.com/post/how-to-deploy-a-react--flask-project)

这种模式非常适合 Heroku,但并不能很好地转化为其他托管服务。对于 Express 应用程序,我们依赖于一个名为 **heroku-postbuild** . **** 在 Flask 示例中,我们使用了一些 Heroku 独有的技术,称为 **档案** .

我们如何尽可能轻松地将这些应用程序迁移到不同的免费服务?

我觉得最简单的做法是为您的应用程序创建一个 Docker 映像并部署您的容器。你可以捕捉到同样的魔力 **heroku-postbuild** 带有 Docker 多阶段构建的脚本!

那里有大量关于如何充分利用 Docker 的优秀资源,这篇文章足以让你以最少的想法离开 Heroku。

下面是一个示例 Express 应用程序,配置为提供静态 Create React App 构建,同时还处理 API 请求。该项目设置为通过以下方式部署到 Heroku **heroku-postbuild** **** 或者可以部署为 docker 容器。

https://github.com/motherbrainn/deploy-react-docker

回顾一下,这在 Heroku 上的工作方式是:

开始 将安装服务器然后启动 Express 应用程序

heroku-postbuild 将安装客户端并运行构建命令

如果我们查看 Dockerfile,我们将了解如何使用容器来实现这一点:

FROM node:16 AS ui-build WORKDIR / COPY client/ ./client/ RUN cd client && npm install && npm run build FROM node:16 AS server-build WORKDIR /usr/src/app ENV NODE_ENV=’production’ COPY — from=ui-build /client/build ./client/build COPY server/ ./server/ RUN cd server && npm install EXPOSE 4000 CMD [“node”, “./server/app.js”]

分解这个多阶段构建中发生的事情:

  • 安装客户端并创建构建。这相当于 **heroku-postbuild** .
  • 将 NODE_ENV 设置为生产(这不再像在 Heroku 上那样免费)。
  • 仅为我们构建的第二阶段复制构建文件夹。这节省了我们容器中的空间,实际上比保留整个客户端文件夹的旧 Heroku 样式更好。
  • 复制服务器文件并安装服务器。
  • 启动 Express 服务器!

就是这样……您可以通过将演示项目部署到 Heroku 来对其进行测试,然后转身将其再次部署到任何支持 docker 映像的地方!

这打开了一堆免费或非常便宜的托管选项,这里有一些:

  • 数字海洋
  • 天蓝色
  • AWS

奖金 :如果您想在本地测试此示例中的容器,这可以为您节省 google 搜索:

创建图像: docker build -f Dockerfile -t<tag_name> .

运行图像: 搬运工运行 -p 4000:4000 -d<image_id>

特别感谢 Heroku 多年来免费提供的东西 ❤️

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/22016/08580708

posted @   哈哈哈来了啊啊啊  阅读(693)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示