前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker学习记录(2)——JAVA应用容器化(JAVA博客应用Solo)

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

作者头像
胡了了
发布2017-12-28 17:55:49
1K0
发布2017-12-28 17:55:49
举报
文章被收录于专栏:从零学习云计算

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

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

  • 安装源代码工具Git与构建工具Maven。
代码语言:javascript
复制
# yum -y install git maven
  • 从GitHub上下载JAVA应用源代码。
代码语言:javascript
复制
# 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。
代码语言:javascript
复制
#### 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编译构建应用。
代码语言:javascript
复制
# cd solo
# mvn package

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

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

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

Dockerfile内容如下:

代码语言:javascript
复制
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端口。

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

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

代码语言:txt
复制
         $(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);                 });             });
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-09-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档