Docker学习记录(2)——JAVA应用容器化(JAVA博客应用Solo)

以GitHub上一个开源JAVA博客应用为例,地址为:https://github.com/b3log/solo。它的项目结构是基于Maven的要求布置的,通过Maven可以编译和构建WAR包。

执行容器化的环境为CentOS7.2。

  • 安装源代码工具Git与构建工具Maven。
# yum -y install git maven
  • 从GitHub上下载JAVA应用源代码。
# mkdir /opt/java
# mkdir /opt/java/demo
# cd /opt/java/demo
# git clone https://github.com/b3log/solo
  • 修改solo/src/main/resources/latke.properties。如果想要使用非本机访问Solo,则需要修改serverHost。
#### Server ####
# Browser visit protocol
serverScheme=http
# Browser visit domain name
serverHost=192.168.121.133
# Browser visit port, 80 as usual, THIS IS NOT SERVER LISTEN PORT!
serverPort=8080

#### Cookie ####
cookieName=solo
cookieSecret=Beyond

#### Runtime Mode ####
runtimeMode=DEVELOPMENT
#runtimeMode=PRODUCTION
  • 一般的Maven项目可以选择使用Maven编译构建应用。
# cd solo
# mvn package

构建完成后,将在target目录下生成一个WAR包。

这里可以自己编写Dockerfile,采用Tomcat作为基础镜像,将WAR拷贝到发布目录即可。

而Solo本身内嵌了Jetty(轻量级的 Java Web 容器)和H2(Java SQL 数据库),其官方直接提供了Dockerfile(在工程目录下),所以可以直接基于该Dockerfile构建。

Dockerfile内容如下:

FROM maven:3
ADD . /solo
WORKDIR /solo
RUN mvn install
WORKDIR /solo/target/solo
EXPOSE 8080
CMD ["/bin/sh", "-c", "java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter"]

官方的Dokcerfile选择Maven作为基础镜像,将整个工程复制到镜像中,执行构建,然后暴露8080端口。

# docker build -t blog .
  • 查看刚才生成的新镜像。
# docker images|grep blog
  • 测试镜像。
# docker run -it -p 8080:8080 blog
  • 浏览器访问测试。

之后结合Docker学习记录(1)——搭建自己的Docker Registry 将镜像上传至自己的镜像仓库即可。

$(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); });

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

数据库厂商提供的 Providers for ASP.NET

ASP.NET一堆内建服务,只提供SqlProvider,至于Oracle或MySQL怎么办?现在Oracle或MySQL也应该是因为微软的不支持,而自己开发相...

19980
来自专栏康怀帅的专栏

使用 Docker 安装 Gogs

使用 Docker Compose 安装 Gogs。 GitHub:https://github.com/khs1994-docker/ci docker-co...

74850
来自专栏杨建荣的学习笔记

物化视图全量刷新与insert的redo生成量测试(69天)

之前的一篇博客中提到,物化视图的全量刷新也是一种高可用性的体现,但是性能如何呢,下面来简单的测试一下。 首先需要创建一个函数,这个函数会计算当前session下...

355110
来自专栏沃趣科技

ASM 翻译系列第十三弹:ASM 高级知识 - Forcing the issue

原作者:Bane Radulovic 译者: 庄培培 审核: 魏兴华 DBGeeK社群联合出品 Forcing the issue ASM中有部分的...

39550
来自专栏云计算教程系列

在你的电脑上运行Kubernetes

Kubernetes 是编配平台的首选。在开发过程中,您不妨在个人电脑上运行 Kubernetes,以便在本地启动和调试应用程序。本文提供了两种在 Mac OS...

24720
来自专栏逸鹏说道

Ubuntu18.04下VMware or VirtualBox 虚拟化的问题

This host supports Intel VT-x, but Intel VT-x is disabled. Intel VT-x might be d...

21740
来自专栏数据和云

故障分析:RAC环境下ORA-12545连接错误

崔华,网名 dbsnake Oracle ACE Director,ACOUG 核心专家 分享一则由于SCAN IP导致的连接故障 11gR2 RAC两节点的环...

30340
来自专栏搜云库

可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI

上一篇文章搭建了一个具有基础功能,权限认证、TLS 的私有仓库,但是Docker Registry 作为镜像仓库,连管理界面都没有,甚至连一些运维必备的功能都是...

68080
来自专栏乐沙弥的世界

Oracle RAC failover 测试(TAF方式)

    Oracle RAC 客户端故障转移(failover),当采用TAF方式时,对于已经建立连接的客户端,在连接的实例或节点出现故障时,客户端无需再次发出...

17540
来自专栏云计算

如何使用Docker部署微服务

微服务是用于构建大规模应用程序的越来越流行的体系结构。应用程序不是使用单一的单一代码库,而是分解为一组称为微服务的较小组件。这种方法提供了多种好处,包括扩展单个...

77620

扫码关注云+社区

领取腾讯云代金券