部署到 AWS ElasticBeanstalk
了解将 Grails 应用部署到 Elastic Beanstalk 的简便方法。
作者:Sergio del Amo
Grails 版本 3.3.8
1 入门
在本指南中,你将学习如何将 Grails 应用部署到 AWS Elastic Beanstalk。
AWS Elastic Beanstalk 是一款易于使用的服务,适用于通过 Java 开发的 web 应用和服务部署和扩展。
1.1 你需要了解的
要完成本指南,你需要了解以下内容
-
一些时间
-
一个像样的文本编辑器或 IDE
-
安装 JDK 1.8 或更高版本,且已适当地配置了
JAVA_HOME
你还需要一个 AWS 帐户。
1.2 解决方案
我们建议你按照下一部分的说明,一步一步创建应用。但是,你可以直接进入完成示例。
-
下载并解压缩源代码
或
-
克隆 Git 代码库:
git clone https://github.com/grails-guides/grails-elasticbeanstalk.git
然后,cd
进入下载的/克隆的项目根目录中的 complete
文件夹。
2 编写应用
创建应用
grails create-app example.grails.complete
endpoints:
enabled: true
jmx:
enabled: true
添加 Micronaut HTTP 客户端依赖项,我们将在功能测试中很快使用它。
repositories {
..
mavenCentral()
..
}
dependencies {
..
testCompile "io.micronaut:micronaut-http-client:$micronautVersion"
..
}
启用 Spring Boot actuators 后,会公开 /health
端点。
创建用于验证它的测试
package example.grails
import grails.testing.mixin.integration.Integration
import spock.lang.AutoCleanup
import spock.lang.Shared
import spock.lang.Specification
import io.micronaut.http.HttpRequest
import io.micronaut.http.client.HttpClient
import grails.testing.spock.OnceBefore
@Integration
class HealthSpec extends Specification {
@Shared
@AutoCleanup
HttpClient client
@OnceBefore (1)
void init() {
String baseUrl = "http://localhost:$serverPort" (2)
client = HttpClient.create(new URL(baseUrl))
}
void "health responds OK"() {
when:
Map m = client.toBlocking().retrieve(HttpRequest.GET("/health"), Map) (3)
then:
m
m.containsKey("status")
m.get("status") == "UP"
}
}
1 | grails.testing.spock.OnceBefore 注释是实现以下相同行为的速记方式,这种行为会将 @RunOnce 和 @Before 注释应用到装入方法。 |
2 | serverPort 属性自动注入,它包含应用程序将在功能测试中运行的随机端口。 |
3 | 借助 Micronaut 的流体 API,创建 HTTP 请求非常容易。 |
3 部署到 Elastic Beanstalk
让我们进行一个 FAT Jar 部署。
编辑 build.gradle
。不要应用 war
Gradle 插件。
//apply plugin:"war"
使用 gradle 命令生成一个 Fat Jar。
$ ./gradlew assemble
$ du -h build/libs/complete-0.1.jar
40M build/libs/complete-0.1.jar
以下屏幕截图说明了将 Grails 应用程序部署到 AWS Elastic Beanstalk 所需的步骤
-
选择 Java 平台。
-
单击上载按钮
上载你的 JAR。
在创建环境之前,单击“配置更多选项”。如果你忘记,可以在创建环境后进行更改。
默认情况下,Grails 应用程序将侦听端口 8080。Elastic Beanstalk 假设应用程序将侦听端口 5000。有两种方法可以修复此差异:更改 Elastic Beanstalk 配置为使用的端口或更改 Grails 应用程序侦听的端口。对于这篇文章,我们将更改 Grails 应用程序侦听的端口。
最简单的方法是在 Elastic Beanstalk 环境中指定 SERVER_PORT 环境变量并将值设置为 5000。
在环境的“配置”页面的“软件配置”下,单击设置图标。
现在你可以单击创建环境。
几分钟后,你将能够访问 /health
端点。
4 后续步骤
Grails 3 应用程序是 Spring Boot 应用程序。阅读 使用 AWS Elastic Beanstalk 在 AWS 上部署 Spring Boot 应用程序 教程以了解更多信息。
使用 Grails 指南 探索更多功能。