一、概述

目前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":"/"}

Docker 封装java镜像的更多相关文章

  1. docker封装mysql镜像

    一.概述 直接使用官方的镜像 docker pull mysql:5.7 但是mysqld.cnf并没有优化,还是默认的. 二.封装镜像 创建目录 # dockerfile目录 mkdir -p /o ...

  2. docker封装redis镜像

    一.概述 线上使用的redis版本为 3.2.13,但是dockerhub没有此版本的镜像.只有3.2.12但是默认的镜像启动时,是没有redis.conf的,如果需要加配置,需要自己定义配置文件. ...

  3. Docker多步构建更小的Java镜像

    译者按: 最新版Docker将支持多步构建(Multi-stage build),这样使用单个Dockerfile就可以定义多个中间镜像用于构建,测试以及发布等多个步骤,并且有效减小最终镜像的大小. ...

  4. Docker Java 镜像基础(四)

    基于官方提供的centos 7.2.1511 基础镜像构建JDK 和tomcat 镜像,先构建JDK镜像,然后在基于JDK镜像构建tomcat镜像 构建 centos:latest 基础镜像: # 下 ...

  5. 使用 Docker 搭建 Java Web 运行环境

    黄勇的博客 Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐 ...

  6. 转:使用 Docker 搭建 Java Web 运行环境

    原文来自于:http://www.codeceo.com/article/docker-java-web-runtime.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都 ...

  7. 使用 Docker 搭建 Java Web 运行环境(转)

    原文 http://www.importnew.com/21798.html Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几 ...

  8. Docker最全教程之使用Docker搭建Java开发环境(十七)

    前言 Java是一门面向对象的优秀编程语言,市场占有率极高,但是在容器化实践过程中,发现官方支持并不友好,同时与其他编程语言的基础镜像相比(具体见各语言镜像比较),确实是非常臃肿. 本篇仅作探索,希望 ...

  9. docker-java Docker的java API

    docker-java docker-java 是 Docker的 Java 版本API Docker 当前的实现基于 Jersey 2.x 因此 classpath 不兼容老版本的 Jersey 1 ...

随机推荐

  1. MyBatis传入参数为list、数组、map写法

    1.foreach简单介绍: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有item,index,collection,open,sep ...

  2. 关于python的四舍五入

    参考https://blog.csdn.net/qq_39234705/article/details/82817703 四舍五入有很多相关资料,主要用两种方法round()和'%.2f' 两种方法取 ...

  3. [Beta阶段]第十一次Scrum Meeting

    Scrum Meeting博客目录 [Beta阶段]第十一次Scrum Meeting 基本信息 名称 时间 地点 时长 第十一次Scrum Meeting 19/05/20 大运村寝室6楼 15mi ...

  4. 暗黑战神! Unity3D网游ARPG实战案例

    前面开发了几个单机小游戏,该是时候挑战一下网络游戏方面的开发了! 3D网游ARPG实战案例(第二季),使用Unity2017.3版本制作 内容包括 服务端部分 1.网络通信编码,协议及传输 2.数据驱 ...

  5. web项目脱敏白名单管理

    写在前面 下午没事, 看一下同事写的脱敏白名单管理功能. 所谓的脱敏就是将页面中查询出的信息列表当中的身份证号及手机号等关键信息部分用*号代替.该功能主要思路是新增一个页面用于配置哪些页面以及页面中哪 ...

  6. UDP用于保持大量终端的在线与控制,应用与业务则通过TCP去实现。这个和FTP服务控制与数据分离,采取不同的连接,有异曲同工之处 端口映射老化时间

    移动端IM/推送系统的协议选型:UDP还是TCP? http://www.52im.net/thread-33-1-1.html

  7. android : 解决android无法使用sun.misc.BASE64Encoder sun.misc.BASE64Decoder 的问题, 无需添加rt.jar

    一共包含: BASE64Decoder.java BASE64Encoder.java CEFormatException.java CEStreamExhausted.java CharacterD ...

  8. 019 spring social

    1.原理 2. 3. 4.

  9. eslint配置大全

    https://segmentfault.com/a/1190000014230857 https://www.jianshu.com/p/23a5d6194a4b VSCODE更新后,格式化会加分号 ...

  10. LeetCode_455. Assign Cookies

    455. Assign Cookies Easy Assume you are an awesome parent and want to give your children some cookie ...