一、概述

目前java采用的框架是Spring,服务器直接通过

java -jar xxx.jar

就可以启动服务了。

二、jdk镜像

在docker中跑java应用,需要有jdk环境支持才行。

获取jdk镜像,有2种方式。

1. 自己制作jdk镜像

2. 使用Docker Hub 现成的jdk镜像。

首先说明一下,自己制作jdk镜像。如果基础镜像采用centos,ubuntu,那么制作出来的镜像会特别大。

Alpine只有5M,可以通过作为基础镜像,来制作镜像。但是会有2个问题:1. 直接调用java命令会报错。2. 时区不是中国时区。

基于2个问题,我采用的是2种方式。

https://hub.docker.com/r/mayan31370/openjdk-alpine-with-chinese-timezone/tags

这个镜像,已经帮你解决了,上面2个问题。而且,镜像本身,也做了优化。只有68M左右,非常小。

三、封装java镜像

有了jdk镜像后,封装java就简单多了。

创建目录

创建应用目录,文件如下:

.
├── Dockerfile
└── RMS.jar

Dockerfile

FROM mayan31370/openjdk-alpine-with-chinese-timezone:-jdk
ADD RMS.jar .
EXPOSE
ENTRYPOINT [ "java", "-jar", "RMS.jar" ]

注意:这个jar启动,会监听8080端口。

RMS.jar是已经打包好的java应用。

生成镜像

docker build -t rms .

启动镜像

docker run -it -p : rms /bin/bash

输出:

 .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.9.RELEASE) -- ::02.517 [main] INFO com.iaicmt.rms.RmsApplication - Starting RmsApplication v1.-SNAPSHOT on e6c7908e56ab with PID (/RMS.jar started by root in /)
...
-- ::13.321 [main] INFO o.s.j.e.a.AnnotationMBeanExporter - Registering beans for JMX exposure on startup
-- ::13.549 [main] INFO o.s.b.c.e.u.UndertowEmbeddedServletContainer - Undertow started on port(s) (http)
-- ::13.570 [main] INFO com.iaicmt.rms.RmsApplication - Started RmsApplication in 12.483 seconds (JVM running for 14.623)

访问页面

# curl 127.0.0.1:
{"timestamp":,"status":,"error":"","message":"Null","path":"/"}

最新文章

  1. JS学习(二)
  2. Android View自动生成插件
  3. 短租app简析
  4. TDBAdvGrid 只读状态下复制功能
  5. CSS3圆角气泡框,评论对话框
  6. FullPage.js全屏滚动插件的配置项、方法和回调函数
  7. 怎么用visual studio2010编写c++程序|用visual studio2010编写c++程序的步骤
  8. 浏览器文档播放Shockwave Flash 插件问题
  9. Delete Node in a Linked List leetcode
  10. Javascript 标识符及同名标识符的优先级
  11. netcore发布到 iis 设置 部署 环境 变量
  12. Hibernate入门(四)---------一级缓存
  13. onmouseover和onmouseenter区别
  14. xrange 和range的区别
  15. JS高级-***Function- ***OOP
  16. SDN 第二次作业
  17. java语言特性之一
  18. html5 移动适配写法
  19. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 问题解决方法
  20. ReentrantReadWriteLock读写锁的使用<转>

热门文章

  1. 【CF241E】Flights
  2. R = [obj for obj in recs[imagename] if obj['name'] == classname] KeyError: '007765'
  3. [原创]STAR法则
  4. 【Python】[技术博客] 一些使用Python编写获取手机App日志的操作
  5. 使用MeadCo's ScriptX控件做WEB打印
  6. SpringBoot——配置文件加载位置及外部配置加载顺序
  7. Mini UI tree上万复杂节点加载缓慢处理设计
  8. string, byte[], Base64String相互转化
  9. 【PHP】使用phpoffice/phpspreadsheet导入导出数据
  10. Session覆盖测试(要验证码提交到后续页面操作的 绕过去的场景)