”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 在 Koyeb 上部署 Spring Boot 应用程序

在 Koyeb 上部署 Spring Boot 应用程序

发布于2024-09-17
浏览:934

Deploying Spring Boot Applications on Koyeb

介绍

当我们作为开发人员开始构建东西时,我们的主要目标之一就是与他人分享我们所创建的内容。对于前端开发人员来说,这通常很简单,这要归功于 Vercel 和 Netlify 等出色的托管服务,它们无缝支持前端应用程序。然而,对于后端开发人员来说,展示我们的工作可能更具挑战性。我们构建 API,使用数据库,虽然 JSON 可能很强大,但它在视觉上不如使用 CSS 或 Lottie 构建的动画那么引人注目。

这就是为什么找到一种高效可靠的方式来部署后端应用程序至关重要。 Spring Boot 是一种流行的基于 Java 的框架,它简化了构建生产就绪应用程序的过程,但部署它们仍然是一个挑战。这就是 Koyeb 的用武之地。Koyeb 提供了一个强大且易于使用的平台,允许开发人员以最少的设置快速部署他们的 Spring Boot 应用程序。在本指南中,我们将引导您完成在 Koyeb 上部署带有 PostgreSQL 数据库的 Spring Boot 应用程序的整个过程,从开始到结束。


1. 前提条件

在我们深入部署过程之前,请确保您具备以下条件:

  • 一个基本的 Spring Boot 应用程序。 如果您没有,您可以使用 Spring Initializr 快速生成一个具有以下依赖项的项目:
    • Spring Web
    • Spring Data JPA
    • PostgreSQL 驱动程序
  • GitHub(或 GitLab/Bitbucket)存储库,托管 Spring Boot 项目的位置。
  • Neon 帐户。 在 Neon 注册
  • 一个 Koyeb 帐户。 如果您没有 Koyeb 的网站,请注册。
  • 已安装 Maven 或 Gradle,具体取决于您的 Spring Boot 项目的配置方式。

2. 设置数据库

  • 在 Koyeb 上,实例化一个免费 PostgreSQL 数据库,它将提供数据库 URL 但每月仅限 50 小时。

-在 Neon 上,实例化一个 免费 PostgreSQL 数据库,该数据库还将提供数据库 URL。


3.使用Spring boot连接数据库

在资源目录中,您将创建一个名为 env.properties 的文件,其中存储所有环境变量,在本例中为 DB_URL、DB_USERNAME 和 DB_PASSWORD。

永远不要提交这个文件到你的github的存储库。

env.properties 文件:

DB_USERNAME=
DB_PASSWORD=
DB_URL=

您的application.properties文件:

application.properties文件:

server.port=${PORT:8080}

spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}

spring.jpa.hibernate.ddl-auto=update

spring.config.import=classpath:env.properties

解释

  • server.port - 这是您的应用程序将运行的端口。我们设置了一个环境变量 PORT,如果 PORT 为空,则回退为 8080。
  • spring.datasource.url - 这是来自 Neon 或 Koyeb 仪表板的环境变量。
  • spring.datasource.username - 这是来自 Neon 或 Koyeb 仪表板的环境变量。
  • spring.datasource.password - 这是来自 Neon 或 Koyeb 仪表板的环境变量。
  • spring.config.import - 这将导入您存储敏感数据的文件。

4.创建system.properties文件

在项目的根目录下,创建一个system.properties文件。

此文件指定要使用的 Java 运行时版本,以便 Koyeb Java 构建包使用正确的版本执行项目。

记住:Koyeb 接受主要版本值 1.8、11、13、15、17、19 和 20。

如果不指定Java版本,版本1.8将被使用。

我正在使用Java 21。如果您使用的是其他版本,请相应更改。

系统属性

java.runtime.version=21

5. 创建控制器

此控制器将在 / 路由处显示 Hello World 消息。

package com.example.demo.Modules.User.controller;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;

@RestController
public class UserController {

    @GetMapping("/")
    public String helloWorld() {
        return "Hello World";
    }

}

6.将代码推送到Github

在 Github 上创建公共存储库并推送您的代码。获取此存储库的 URL


7. 在 Koyeb 上部署

  • 输入您的 koyeb 帐户。
  • 转到服务 > Web 服务 > 使用 Github 创建 Web 服务。
  • 连接到 Github 或粘贴公共存储库 URL。
  • 等待项目构建。
  • 如果成功,将生成一个公共URL,每个人都可以访问您的Spring Boot应用程序。

结论

就是这样!您已经创建了一个 Spring Boot 应用程序,将其与云数据库连接,并将所有内容部署在 Koyeb 上。这可以是您想要在作品集中展示的项目的开始,让客户看到您可以做什么。

您可以使用图像上传器文章来增加此应用程序。

感谢您的阅读!


?参考

  • Koyeb - Spring Boot 部署
  • Koyeb - Java 参考

?跟我说话

  • 领英
  • Github
  • 文件夹
版本声明 本文转载于:https://dev.to/mspilari/deploying-spring-boot-applications-on-koyeb-44kj?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用 mysqli_pconnect() 在 PHP 中实现 MySQL 连接池?
    如何使用 mysqli_pconnect() 在 PHP 中实现 MySQL 连接池?
    MySQL 的 PHP 连接池在 PHP 中,维护数据库连接会影响性能。为了优化这一点,开发人员经常考虑使用连接池技术。MySQL 的连接池MySQL 没有内置的连接池机制。然而,MySQLi 扩展提供了 mysqli_pconnect() 函数,其作用与 mysqli_connect() 类似,但...
    编程 发布于2024-11-07
  • 将 HTMX 添加到 GO
    将 HTMX 添加到 GO
    HTMX 是 intercooler.js 的后继者,用于使用 HTTP 命令扩展 HTML,而无需编写 API。现在,我知道一开始我说我要删除抽象层,但是我更多的是系统/工具程序员,所以我仍然需要一些抽象,直到我掌握了底层实际发生的情况。 基本概念 HTMX 部署 AJAX 命令来...
    编程 发布于2024-11-07
  • 发现 itertools
    发现 itertools
    Itertools 是最有趣的 Python 库之一。它包含一系列受函数式语言启发的函数,用于与迭代器一起使用。 在这篇文章中,我将提到一些最引起我注意并且值得牢记的内容,以免每次都重新发明轮子。 数数 好几次我都实现了无限计数(好吧,结束了 显式地在某个点用中断)使用 while ...
    编程 发布于2024-11-07
  • 为什么每个人都应该学习 Go(即使您认为生活中不需要另一种语言)
    为什么每个人都应该学习 Go(即使您认为生活中不需要另一种语言)
    啊,Go,编程语言。您可能听说过,也许是从办公室里一位过于热情的开发人员那里听说过的,他总是不停地谈论他们的 API 现在有多“快得惊人”。当然,您已经涉足过其他语言,也许您会想:“我真的需要另一种语言吗?”剧透警报:是的,是的,你知道。 Go 就是那种语言。让我以最讽刺、最真诚的方式为你解释一下。...
    编程 发布于2024-11-07
  • 如何计算 Pandas 中多列的最大值?
    如何计算 Pandas 中多列的最大值?
    在 Pandas 中查找多列的最大值假设您有一个包含多列的数据框,并且希望创建一个包含两个或多个列中的最大值的新列现有的列。例如,给定 A 列和 B 列,您需要创建 C 列,其中:C = max(A, B)要完成此任务:使用 max 函数和 axis=1 计算指定列中每行的最大值:df[["...
    编程 发布于2024-11-07
  • 如何在 PHP 中从目录中检索文件名?
    如何在 PHP 中从目录中检索文件名?
    从 PHP 中的目录中检索文件如何在 PHP 中访问目录中的文件名?事实证明,确定正确的命令具有挑战性。这个问题旨在为寻求类似解决方案的个人提供帮助。PHP提供了几种从目录获取文件列表的方法:DirectoryIterator(推荐)此类允许对目录中的文件进行迭代:foreach (new Dire...
    编程 发布于2024-11-07
  • 使用 Linq、Criteria API 和 Query Over 扩展 NHibernate 的 Ardalis.Specification
    使用 Linq、Criteria API 和 Query Over 扩展 NHibernate 的 Ardalis.Specification
    Ardalis.Specification is a powerful library that enables the specification pattern for querying databases, primarily designed for Entity Framework Cor...
    编程 发布于2024-11-07
  • PYTHON:OOP {初学者版}
    PYTHON:OOP {初学者版}
    Python:面向对象编程[OOP]:是一种编程范式(模型),使用对象和类来构建软件一种模拟现实世界实体和关系的方法。这是基于对象可以包含数据和操作该数据的代码的想法。 关于面向对象编程,您需要了解一些关键概念: 班级 目的 属性 方法 遗产 封装 多态性 抽象 下面的示例是一个帮助您参考正在解释的...
    编程 发布于2024-11-07
  • Neo.mjs:一个高性能开源 JavaScript 框架。
    Neo.mjs:一个高性能开源 JavaScript 框架。
    在浏览 GitHub 并寻找可协作的开源项目时,我发现了 Neo.mjs。我对这个项目产生了兴趣,并开始更多地研究这个新框架。我想在这篇博文中分享我发现的所有内容。 什么是 Neo.mjs? Neo.mjs 旨在构建高性能、数据驱动的 Web 应用程序,重点关注利用 Web Work...
    编程 发布于2024-11-07
  • 将 Azure Functions 部署到 Azure 容器应用程序的两种方法的比较
    将 Azure Functions 部署到 Azure 容器应用程序的两种方法的比较
    昨天,我写了一篇题为“在 Azure 容器应用程序上部署 Java Azure Function”的文章。 在那篇文章中,我提到使用 Azure 的集成管理功能,我想澄清这意味着什么以及它与本文中以前的方法有何不同。 旧方法:使用 az containerapp create 创建 ...
    编程 发布于2024-11-07
  • 如何使用 MinGW 在 Windows 上构建 GLEW?分步指南。
    如何使用 MinGW 在 Windows 上构建 GLEW?分步指南。
    使用 MinGW 在 Windows 上构建 GLEW:综合指南使用 GLEW,这是一个无缝集成 OpenGL 和 WGL 函数的纯头文件库,使用 MinGW 增强 Windows 上 OpenGL 应用程序的开发。为了使用 MinGW 有效构建 GLEW,需要一组特定的命令和步骤。首先,创建两个名...
    编程 发布于2024-11-07
  • 如何使用 CSS 创建带有对角线的双色调背景?
    如何使用 CSS 创建带有对角线的双色调背景?
    使用对角线创建双色调背景要使用 CSS 实现由对角线分为两部分的背景,请执行以下操作这些步骤:1。创建两个 Div:创建两个单独的 div 来表示两个背景部分。2.设置 Div 样式:将以下 CSS 应用于 div:.solid-div { background-color: [solid co...
    编程 发布于2024-11-07
  • 文档的力量:阅读如何改变我在 JamSphere 上使用 Redux 的体验
    文档的力量:阅读如何改变我在 JamSphere 上使用 Redux 的体验
    作为开发人员,我们经常发现自己一头扎进新的库或框架,渴望将我们的想法变为现实。跳过文档并直接跳到编码的诱惑很强烈——毕竟,这有多难呢?但正如我通过构建音乐管理平台 JamSphere 的经验所了解到的那样,跳过这一关键步骤可能会将顺利的旅程变成充满挑战的艰苦战斗。 跳过文档的魅力 当...
    编程 发布于2024-11-07
  • 如何在PHP多子域应用中精准控制Cookie域?
    如何在PHP多子域应用中精准控制Cookie域?
    在 PHP 中控制 Cookie 域和子域创建多子域站点时,有必要控制会话 cookie 的域确保每个子域的正确会话管理。然而,手动设置域时,PHP 的 cookie 处理似乎存在差异。默认情况下,session_start() 会使用当前子域分配会话 cookie。但是,尝试使用 ini_set(...
    编程 发布于2024-11-07
  • Java中的三元运算符可以不返回值吗?
    Java中的三元运算符可以不返回值吗?
    三元运算符:深入研究代码优化虽然三元运算符 (?:) 是 Java 中的一个强大工具,但它了解其局限性至关重要。一个常见的误解是可以在不返回值的情况下使用它。与这种看法相反,Java 不允许在没有 return 语句的情况下进行三元运算。三元运算符的目的是评估条件并将值分配给变量或表达式。如果没有返...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3