render.com を使用して Springboot プロジェクトを無料でデプロイする

最近、無料のプラットフォームを使用して springboot プロジェクトをデプロイしたいのですが、審査の結果、以下のサービス プロバイダーが利用可能です。

  1. heroku
  2. フライアイオ
  3. レンダリング.com

以下にいくつかの比較を示します。

プラットホーム サポート 限界
heroku.com ほとんどのサポート クレジットカードを紐付ける必要があり、自由な時間がないようです
フライアイオ Node、Python、Laravel、Go、Ruby、Docker 最大 3 台の共有 CPU-1 * 256MB 仮想マシン、3GB 永続ボリューム ストレージ、160GB の外部トラフィック
レンダリング.com Node、Python、Go、Ruby、PHP、Docker 帯域幅は 100 GB、ビルド時間は 500 分/月、ビルド成功後の 5 つのアプリケーションがロールバック用に予約されます。

heroku は 2016 年に使用された比較的古いブランドで、無料のデータベースも使用できます

fly.io も良さそうですが、積極的にバージョンをリリースするにはクライアントを使用する必要があり、render.com は github 上のプロジェクトをインポートでき、送信後の自動デプロイメントを実現するのが最も便利です。そのため、最終的な選択肢は render.com です。

プロジェクトの登録とインポート

render.com を開いた後、GitHub アカウントでログインし、承認後にプロジェクトをインポートできます。

多くの言語がサポートされています:

Node.js が選択できるプラットフォームは本当にたくさんあると感じています

新しい Springboot プロジェクトを作成する

上の図から、レンダリング自体は Java プロジェクトをサポートしていないため、Docker を使用する必要があることがわかります。

まずstart.spring.io/に移動して、最も単純な Spring Boot プロジェクトを生成します。

ダウンロード後、ローカルで正常に実行でき、インターフェイスに正常にアクセスできます。次のステップは、レンダリングにデプロイすることです。

Dockerイメージを作成する

まず、デプロイ中に render.com で実行する手順を整理しましょう。

  1. GitHub からソースコードをプルする
  2. 指定されたgradleを使用して.jarファイルをビルドおよび生成します
  3. java -jar /app.jar実行プロジェクトを実行する

我本身对 docker 不熟悉,经过了一些曲折,最终完成了上面的步骤,成功跑起来了

#
# Build stage
#
FROM gradle:jdk17-jammy AS build
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN gradle build --no-daemon

LABEL org.name="hezf"
#
# Package stage
#
FROM eclipse-temurin:17-jdk-jammy
COPY --from=build /home/gradle/src/build/libs/docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

这个例子源码在 GitHub

环境变量

很多时候我们后端项目需要链接数据库,但是这些信息肯定是需要隐藏起来的,千万不要传到 GitHub 上

我在filess 新建了个 MySQL 实例,在本地使用 navicat 成功连上了,当然了这个数据库也是免费的

首先我们在 springboot 项目根目录,新建个 .env 文件,然后在.gitignore把这个文件名添加进去

### VS Code ###
.vscode/

.env

这样这个文件就不会上传到 GitHub 了,然后在.env填写上一步获取到的数据库相关信息

DB_HOST=gmp.zh.filess.io
DB_PORT=3307
DB_USER=authdb_replacedie
DB_PASSWORD=1f1fdfe1a0220bf5e822ef1a8d583b762d
DB=authdb_replacedie

配合项目配置文件 application.properties


spring.config.import=optional:file:.env[.properties] 

DB_HOST: ${DB_HOST}

这样就可以正常的读取环境变量了

  @Value("${DB_HOST}")
  private String dbHost;

以上的内容都是针对本地的环境,因为.env没有上传到 GitHub ,那么在 render.com 怎么读取?

在 render.com 打开项目,找到 Environment ,点击 Add Secret File 按钮,左侧写文件名 .env 右侧填写上内容保存好就可以了

image.png

这样在项目 build 的时候就可以读取到 .env 这个 secret 文件,这就实现了本地和部署环境的一致。而且虽然是开源项目,但是没有暴露关键信息。

おすすめ

転載: juejin.im/post/7261599630827683896
おすすめ