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應用程序包
- 克隆存儲庫
- 導航到應用程序目錄并執行:
上面的命令創建具有以下內容的軟件包:
$ 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的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 挖机电脑版图片(挖机图片挖机)
- 下一篇: 取消截屏设置(如何取消截屏限制)
