aws部署ssh_将Quarkus应用程序部署到AWS Elastic Beanstalk
aws部署ssh
Elastic Beanstalk允许在AWS云中部署和管理应用程序,而无需了解运行这些应用程序的基础架构。
使用Elastic Beanstalk,您可以运行可处理HTTP请求的网站,Web应用程序或Web API,但也可以运行辅助应用程序以运行长任务。 Elastic Beanstalk支持多个预配置平台,包括Go
, .NET
或Java
(仅Java 8),还支持通用Docker
平台。
您只需使用AWS CLI
, AWS EB CLI
或Elastic Beanstack console
上传应用程序,然后Elastic Beanstalk即可自动处理其余部分。
在此博客文章中,您将学习如何在Elastic Beanstalk上使用基于Quarkus的应用程序启动单容器Docker
环境。
注意:此博客没有描述从头开始创建应用程序。 相反,它基于我为Quarkus入门博客文章创建的Quarkus Pet Clinic REST API应用程序 。 可以在Github上找到源代码: https : //github.com/kolorobot/quarkus-petclinic-api
TL; DR:创建软件包并上传到Elastic Beanstalk
在Elastic Beanstalk控制台中创建新应用程序
如果您还不是AWS客户,则需要创建一个AWS账户。 通过注册,您可以访问Elastic Beanstalk和其他所需的AWS服务。
- 使用以下链接打开Elastic Beanstalk控制台: https ://us-west-2.console.aws.amazon.com/elasticbeanstalk/home?region=us-west-2#/gettingStarted?applicationName =Pet诊所API
- 对于
Platform
选择Docker
- 对于
Application Code
选择Sample Application
- 选择
Configure more options
- 在列表中找到
Database
,然后单击Modify
- 在列表中找到
- 点击
Create app
Elastic Beanstalk将为您创建具有所有必需资源(包括RDS)的示例应用程序。
创建应用程序后,您将可以看到该应用程序的链接。
注意:以上步骤基于官方文档: https : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/GettingStarted.CreateApp.html
Preapare应用程序包
- 克隆存储库
git clone https: //github.com/kolorobot/quarkus-petclinic-api
- 导航到应用程序目录并执行:
./mvnw clean package assembly:single -Dquarkus. package .uber-jar= true
上面的命令创建具有以下内容的软件包:
$ unzip -l target/quarkus-petclinic-api- 1.0 . 1 -eb.zip Archive: target/quarkus-petclinic-api- 1.0 . 1 -eb.zip Length Date Time Name --------- ---------- ----- ---- 0 03 - 15 - 2020 13 : 35 config/ 2059 03 - 15 - 2020 13 : 34 Dockerfile 369 03 - 15 - 2020 13 : 34 config/application.properties 38604205 03 - 15 - 2020 13 : 35 quarkus-petclinic-api- 1.0 . 1 -runner.jar --------- ------- 38606633 4 files
将应用程序上传到Elastic Beanstalk
- 使用Elastic Beanstalk控制台上传软件包
- 导航到https://console.aws.amazon.com/elasticbeanstalk
而已。 在下一段中,您将学习如何使用Maven准备软件包。
循序渐进:为Elastic Beanstalk配置应用程序
运行时配置
让我们从特定于Elastic Beanstalk环境的应用程序配置开始。
Quarkus提供了几种在运行时覆盖属性的选项。 我决定将这种方法与配置文件一起放在config/application.properties
文件中。 Quarkus将自动读取该文件,并且该文件中的所有属性都优先于默认值。
创建src/main/resources/application-eb.properties
文件,并将quarkus.http.port
设置为5000
因为这是Elastic Beanstalk Web应用程序的默认端口。
下一个属性与数据源配置相关,因为应用程序将连接到RDS(PostgreSQL)。 RDS实例的连接信息可通过运行容器可用的RDS_*
环境属性提供给在Elastic Beanstalk上运行的应用程序。 要使用此属性,请设置以下属性:
quarkus.datasource.url=jdbc:postgresql: //${RDS_HOSTNAME}:${RDS_PORT}/${RDS_DB_NAME} quarkus.datasource.username=${RDS_USERNAME} quarkus.datasource.password=${RDS_PASSWORD}
阅读有关将应用程序连接到RDS的更多信息: https : //docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.db.html
Dockerfile
Elastic Beanstalk使用Dockerfile
来构建和运行映像。 该文件必须位于应用程序目录的root
目录中。 我使用了原始的src/main/docker/Dockerfile.jvm
并进行了以下调整:
- 将
config/application.properties
复制到容器 - 暴露端口
5000
而不是8080
完整的src/main/docker/Dockerfile.eb
:
FROM registry.access.redhat.com/ubi8/ubi-minimal: 8.1 ARG JAVA_PACKAGE=java- 11 -openjdk-headless ARG RUN_JAVA_VERSION= 1.3 . 5 ENV LANG= 'en_US.UTF-8' LANGUAGE= 'en_US:en' # Install java and the run-java script # Also set up permissions for user ` 1001 ` RUN microdnf install openssl curl ca-certificates ${JAVA_PACKAGE} \ && microdnf update \ && microdnf clean all \ && mkdir /deployments \ && chown 1001 /deployments \ && chmod "g+rwX" /deployments \ && chown 1001 :root /deployments \ && curl https: //repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \ && chown 1001 /deployments/run-java.sh \ && chmod 540 /deployments/run-java.sh \ && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/lib/security/java.security ENV JAVA_OPTIONS= "-Djava.util.logging.manager=org.jboss.logmanager.LogManager" COPY *-runner.jar /deployments/app.jar COPY config /deployments/config EXPOSE 5000 USER 1001 ENTRYPOINT [ "/deployments/run-java.sh" ]
使用Maven创建应用程序包
到目前为止,已创建以下两个文件:
src/main/resources/application-eb.properties
具有特定于Elastic Beanstalk环境的属性src/main/docker/Dockerfile.eb
具有用于Elastic Beanstack环境的容器配置。
要完成配置和配置程序包组装,我们将使用“ Copy Rename Maven Plugin
和“ Maven Assembly Plugin
。
准备组装文件
修改pom.xml
并添加复制和重命名将存储在最终应用程序包zip
文件中的文件的目标:
< build > < plugin > < groupId >com.coderplus.maven.plugins</ groupId > < artifactId >copy-rename-maven-plugin</ artifactId > < version >1.0</ version > < executions > < execution > < id >copy-file</ id > < phase >package</ phase > < goals > < goal >copy</ goal > </ goals > < configuration > < fileSets > < fileSet > < sourceFile >src/main/resources/application-eb.properties</ sourceFile > < destinationFile >target/eb/application.properties</ destinationFile > </ fileSet > < fileSet > < sourceFile >src/main/docker/Dockerfile.eb</ sourceFile > < destinationFile >target/eb/Dockerfile</ destinationFile > </ fileSet > </ fileSets > </ configuration > </ execution > </ executions > </ plugin > </ build >
copy-file
目标将在package
阶段运行,并将先前创建的文件(名称已调整)复制到target/eb
。
配置程序集插件
Maven Assembly Plugin
将用于创建应用程序包。 将以下配置添加到pom.xml
:
< build > < plugin > < artifactId >maven-assembly-plugin</ artifactId > < version >3.2.0</ version > < configuration > < descriptors > < descriptor >src/assembly/eb.xml</ descriptor > </ descriptors > </ configuration > </ plugin > </ build >
现在,创建src/assembly/eb.xml
指示所述组件插件来创建一个描述符zip
含有Dockerfile
, config/application.properties
和Quarkus uber-jar
。 所有这三个文件将位于存档的root
中:
< assembly > < id >eb</ id > < formats > < format >zip</ format > </ formats > < includeBaseDirectory >false</ includeBaseDirectory > < files > < file > < source >target/eb/Dockerfile</ source > < outputDirectory ></ outputDirectory > < filtered >false</ filtered > </ file > < file > < source >target/eb/application.properties</ source > < outputDirectory >config</ outputDirectory > < filtered >false</ filtered > </ file > < file > < source >target/${project.build.finalName}-runner.jar</ source > < outputDirectory ></ outputDirectory > < filtered >false</ filtered > </ file > </ files > </ assembly >
这样就完成了配置。 现在,您可以通过运行以下命令创建包(程序集):
经过以上所有更改,我们可以创建程序包:
./mvnw clean package assembly:single -Dquarkus. package .uber-jar= true
在本地测试软件包
要在本地测试包,请运行:
unzip target/quarkus-petclinic-api- 1.0 . 1 -eb.zip -d target/eb-dist && cd target/eb-dist docker build -t quarkus/petclinic-api-jvm-eb .
在运行容器之前,请启动数据库:
docker run -it --name petclinic-db -p 5432 : 5432 -e POSTGRES_DB=petclinic -e POSTGRES_USER=petclinic -e POSTGRES_PASSWORD=petclinic -d postgres: 11.6 -alpine
运行传递RDS环境变量的应用程序并链接到数据库容器:
docker run -i --rm -p 8080 : 5000 --link petclinic-db -e RDS_HOSTNAME=petclinic-db -e RDS_PORT= 5432 -e RDS_DB_NAME=petclinic -e RDS_USERNAME=petclinic -e RDS_PASSWORD=petclinic quarkus/petclinic-api-jvm-eb
在浏览器中打开http://localhost:8080
,您应该看到主页。
源代码
可以在Github上找到本文的源代码: https : //github.com/kolorobot/quarkus-petclinic-api
参考资料
- https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/single-container-docker.html
- https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.db.html
- https://quarkus.io/guides/config#package-and-run-the-application
也可以看看
- Quarkus入门
- 使用Testcontainers和PostgreSQL进行Quarkus测试
翻译自: https://www.javacodegeeks.com/2020/03/deploy-quarkus-application-to-aws-elastic-beanstalk.html
aws部署ssh
aws部署ssh_将Quarkus应用程序部署到AWS Elastic Beanstalk相关推荐
- 将Quarkus应用程序部署到AWS Elastic Beanstalk
Elastic Beanstalk允许在AWS云中部署和管理应用程序,而无需了解运行这些应用程序的基础架构. 使用Elastic Beanstalk,您可以运行可处理HTTP请求的网站,Web应用程序 ...
- 在CentOS7上部署.net core 控制台应用程序部署为后台服务
在CentOS7上部署.net core 控制台app为后台服务 转载于:https://www.cnblogs.com/wangwust/p/9821547.html
- aws elastic beanstalk入门之简介
文档:What is AWS Elastic Beanstalk? - AWS Elastic Beanstalk 1.简介 Elastic Beanstalk 可以在 AWS 云中快速部署和管理应用 ...
- aws beanstalk mysql_将数据库添加到 Elastic Beanstalk 环境 - AWS Elastic Beanstalk
将数据库添加到 Elastic Beanstalk 环境 Elastic Beanstalk 提供了与 Amazon Relational Database Service (Amazon RDS) ...
- aws beanstalk mysql_DevOps on AWS之Elastic BeanStalk
Elastic BeanStalk相关概念 童话世界中存在着一种魔力beanstalk(豆荚),种在花盆里可以无限的向上生长,越长越高直达云端.AWS Elastic Beanstalk也采用类似概念 ...
- AWS Amplify Console:赋予应用程序快速部署的能力
AWS re:Invent 2018大会发布了很多新功能和服务,包括新的AWS Amplify Console,一种针对移动Web应用程序的持续部署服务. AWS Amplify Console承诺可 ...
- aws fargate_使用AWS Fargate和AWS CDK在AWS上部署服务器端Swift蒸气应用程序
aws fargate Have you ever thought about how to write your back-end applications using Swift without ...
- vue.js部署_如何将安全Vue.js应用程序部署到AWS
vue.js部署 本文最初发布在Okta开发人员博客上 . 感谢您支持使SitePoint成为可能的合作伙伴. 编写Vue应用程序直观,直接,快捷. Vue具有较低的进入门槛,基于组件的方法以及诸如热 ...
- aws部署java应用_在 Elastic Beanstalk 上创建和部署 Java 应用程序 - AWS Elastic Beanstalk...
本文属于机器翻译版本.若本译文内容与英语原文存在差异,则一律以英文原文为准. 在 Elastic Beanstalk 上创建和部署 Java 应用程序 AWS Elastic Beanstalk 支持 ...
最新文章
- 二.Springboot 常用注解
- 移动web开发都会遇到的坑(会持续更新)
- Qt Designer的UI文件格式
- Hbase shell 常用命令
- 访问数组元素进行获取
- 从服务器检索时出错dfdferh01_大数据实战项目之海量人脸特征检索解决方案演进...
- linux 不可中断的进程,不可中断进程和僵尸进程
- 用linux命令清空文件夹,技能包!Linux 下清空或删除大文件内容的 5 种方法
- c语言输入y循环n结束,大佬们帮帮忙 帮我改改 怎样能在输入Y后 再次进行for循环...
- Windows | 常用软件
- VS中加入组件的方法
- linux卸载rpm包的命令,Linux RPM包安装、卸载和升级(rpm命令)
- DOS原理和常用命令详解示例
- Android P 音频焦点管理
- .net core系列源码地址介绍
- 皮尔逊相关系数的计算过程
- html圆圈里面问号,UTF-8编码的html页面显示-(问号)而不是字符
- 青龙2.11.3版本对接傻妞+go-cqhttp+短信登录(Maiark)(兔子)+本地服务器直连GitHub
- Python笔记:数据切片
- 在IDEA里gradle配置和使用
热门文章
- P1850 [NOIP2016 提高组] 换教室
- 牛客题霸 [子数组最大乘积] C++题解/答案
- [HNOI2013]消毒 (匈牙利最大匹配)
- NOIP2020洛谷P7115:移球游戏(分治)
- jzoj6805-NOIP2020.9.26模拟speike【扫描线】
- ssl提高组周四备考赛【2018.10.18】
- 【双指针】Square Pasture G(P7153)
- 【结论题(QAQ)】SSL新年欢乐赛暨BPM退役赛 A 送分题(luogu U102372)
- 【结论】立体井字棋(jzoj 2124)
- UVA10601 Cubes - 波利亚定理