Quarkus入门体验,22ms启动一个Web服务
source link: https://www.pkslow.com/archives/quarkus-quickstart
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Quarkus入门体验,22ms启动一个Web服务 | 南瓜慢说官方网站 pkslow.com
Quarkus
是类似于Spring Boot
的框架,可以方便大家进行Java开发。利用GraalVM
的魔力,能更好的适应云原生的场景,极快的启动速度。
在IDEA就直接有创建Quarkus项目的初始化工具,直接根据自己需要填好即可,非常方便:
选择自己需要的一些组件和依赖,我这里只选择Web Reactive。这跟Spring Boot挺像的。
生成的Java代码就一个文件,很简单小巧:
创建成功后,把编译目标改为11,因为我用的是JDK11。通过mvn clean package
尝试打包,下载依赖包。编译成功后,IDEA支持直接跑Quarkus程序,如下:
启动成功如下:
Quarkus在首页提供了一些开发信息和工具,如下:
访问服务如下:
直接修改Java代码:
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello from pkslow.com";
}
不用重启就可以生效:
在Docker上运行
打包成Native的Docker镜像,命令如下:
$ mvn clean package -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=docker
第一次可能比较长时间,需要下载镜像。但这种打镜像的方法是把文件放在镜像外面。通过-v
的方式来运行。
所以我们再通过下面命令来生成镜像:
$ docker build -f src/main/docker/Dockerfile.native -t pkslow/quarkus-quickstart .
Sending build context to Docker daemon 55.41MB
Step 1/7 : FROM registry.access.redhat.com/ubi8/ubi-minimal:8.6
8.6: Pulling from ubi8/ubi-minimal
a6577091999b: Pull complete
Digest: sha256:33931dce809712888d1a8061bfa676963f517daca993984afed3251bc1fb5987
Status: Downloaded newer image for registry.access.redhat.com/ubi8/ubi-minimal:8.6
---> abb1ba1bceab
Step 2/7 : WORKDIR /work/
---> Running in b1f6c5c33919
Removing intermediate container b1f6c5c33919
---> 44961ddcb521
Step 3/7 : RUN chown 1001 /work && chmod "g+rwX" /work && chown 1001:root /work
---> Running in e1c1a83e964f
Removing intermediate container e1c1a83e964f
---> 225868ceda2c
Step 4/7 : COPY --chown=1001:root target/*-runner /work/application
---> 55b2bba61da1
Step 5/7 : EXPOSE 8080
---> Running in 9b90514423eb
Removing intermediate container 9b90514423eb
---> 00f981b47b0e
Step 6/7 : USER 1001
---> Running in bd5d1b723784
Removing intermediate container bd5d1b723784
---> 14d55159d2d9
Step 7/7 : CMD ["./application", "-Dquarkus.http.host=0.0.0.0"]
---> Running in c60a96727644
Removing intermediate container c60a96727644
---> 77fdda464a6a
Successfully built 77fdda464a6a
Successfully tagged pkslow/quarkus-quickstart:latest
通过Docker来启动:
$ docker run -i --rm -p 8080:8080 pkslow/quarkus-quickstart
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
2022-11-01 07:36:38,557 INFO [io.quarkus] (main) quarkus-quickstart 1.0-SNAPSHOT native (powered by Quarkus 2.13.3.Final) started in 0.022s. Listening on: http://0.0.0.0:8080
2022-11-01 07:36:38,558 INFO [io.quarkus] (main) Profile prod activated.
2022-11-01 07:36:38,558 INFO [io.quarkus] (main) Installed features: [cdi, resteasy-reactive, smallrye-context-propagation, vertx]
可以看出启动相当快,才用了22ms。访问对应的网页和接口也是正常的。
代码请看GitHub: https://github.com/LarryDpk/pkslow-samples
References:
CREATING YOUR FIRST APPLICATION
Code for all: GitHub
欢迎关注微信公众号<南瓜慢说>,将持续为你更新...
Recommendations:
Cloud Native
Terraform
Container: Docker/Kubernetes
Spring Boot / Spring Cloud
Https
如何制定切实可行的计划并好好执行
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK