Rapidoid首先是一个Java的Web框架,提供了一系列Web应用开发相关的类库。其次,Rapidoid还是一个能够提供Web服务的容器化的平台,即可以直接使用Rapidoid构建容器实例,提供HTTP服务。本文详细介绍其作为Web平台的用法。关于Rapidoid开发框架,详见其文档。
Rapidoid平台实际上就是一个Docker容器,可以作为HTTP服务器直接发布静态Web资源,也可以部署Jar形式的Java Web应用,发布动态Web资源。
1. Rapidoid平台的组成
基于openjdk:8-jre-slim的Debian操作系统,即包含Java 8相关类库的Debian stretch操作系统。
容器服务的默认端口8888。
一个脚本文件,用以在容器实例中启动一个可执行的jar文件,默认为容器中的/app/app.jar文件。即执行如下命令:
java ... -jar /app/app.jar
2. Rapidoid平台的获取
docker pull rapidoid
或
docker pull rapidoid:latest
3. Rapidoid平台的用法
1)快速启动容器,并在容器内给出帮助信息
docker run --rm rapidoid --help
2)包含Rapidoid和MySQL两个容器的REST服务
i. 首先启动MySQL容器
docker pull mysql
docker run -d --name my-mysql-container -e MYSQL_ROOT_PASSWORD=db-pass mysql
ii. 启动Rapidoid容器时,连接到MySQL容器
docker run -it --rm \
-p 8888:8888 \
--link my-mysql-container:mysql \#注意这里,链接名必须为mysql
rapidoid \
profiles=mysql \
jdbc.host=mysql \
jdbc.password=db-pass \
'/users <= SELECT user FROM mysql.user'
iii. 验证
打开Web浏览器,访问http://localhost:8888/users
3)直接发布/your-www-root的静态资源
docker run -it --rm \
-p 8888:8888 \
-v /your-www-root:/app/static \注意这里,映射外部资源必须到/app/static
rapidoid
4.编辑/app/config.yml文件,配置Rapidoid
rapidoid.port=4444
rapidoid-admin.port=9999
app.services=ping
admin.services=status
可以在Web浏览器中访问对应的端口及URI,以验证配置是否生效。
http://localhost:4444/_ping
http://localhost:9999/_status
5)基于Rapidoid容器,运行Java应用
Java应用以jar的形式发布,必须被映射为容器内的/app/app.jar文件。
扩展Dockerfile,并复制应用到容器内如下:
FROM rapidoid:latest
...
COPY /location/of/your/webapp.jar /app/app.jar
...
参考链接:
https://www.rapidoid.org/
https://www.rapidoid.org/docs.html
https://github.com/rapidoid/docker-rapidoid
https://store.docker.com/images/rapidoid/
https://docs.docker.com/samples/library/rapidoid/