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 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

Virtual Box下安装Oracle Linux 6.3

      Oracle Linux 6.3已经发布快2年了,其功能有很大的提升,增强了KVM,文件卷的在线resizing,LVM支持 raid4, 5, 6...

382
来自专栏Albert陈凯

linux目录结构和常用命令

一、Linux目录结构 你想知道为什么某些程序位于/bin下,或者/sbin,或者/usr/bin,或/usr/sbin目录下吗?例如,less命令位于/us...

2374
来自专栏散尽浮华

kvm虚拟化管理平台WebVirtMgr部署-完整记录(1)

公司机房有一台2U的服务器(64G内存,32核),由于近期新增业务比较多,测试机也要新增,服务器资源十分有限。所以打算在这台2U服务器上部署kvm虚拟化,虚出多...

29110
来自专栏青枫的专栏

day07_Tomcat服务器与http学习笔记

    WEB,在英语中web即表示网页的意思,它用于表示Internet主机上(服务器)供外界访问的资源。

571
来自专栏LanceToBigData

linux(二)之linux常用命令一

linux的命令非常之多,命令多就算了关键每个命令还有很多的参数。不过其实并不要去害怕它。 你只要常去用,并且的话,大部分你只要记住命令,参数不记得我们可以去查...

1788
来自专栏信安之路

Linux 应急响应流程及实战演练

当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵...

593
来自专栏bboysoul

使用minikube安装k8s单节点集群

minikube是一款快速在本地笔记本电脑上开启一个虚拟机搭建kubernets单节点kubernetes集群的工具,因为一些网络的原因,所以我这里使用的是阿里...

932
来自专栏北京马哥教育

9 个使用前必须再三小心的 Linux 命令

Linux shell/terminal 命令非常强大,即使一个简单的命令就可能导致文件夹、文件或者路径文件夹等被删除。 在一些情况下,Linux 甚至不会询问...

3246
来自专栏散尽浮华

常用rsync命令操作梳理

作为一个运维工程师,经常可能会面对几十台、几百台甚至上千台服务器,除了批量操作外,环境同步、数据同步也是必不可少的技能。 说到“同步”,不得不提的利器就是rsy...

2638
来自专栏菩提树下的杨过

docker学习(2) mac中docker-machine使用vmware fusion以及配置国内镜像加速

一、前言 先回顾下上一节创建docker-machine的过程,默认情况下docker toolbox中的docker-machine使用virtual box...

23810

扫码关注云+社区