一、概述

目前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. 用正确的姿势使用 celery

    简介 celery 是一个简单.灵活.可靠的分布式系统,可以处理大量的消息. celery 是一个任务队列,关注实时处理,同时支持任务调度. 它的工作机制是这样的: 快速使用 安装:pip3 inst ...

  2. 关于wineQQ8.9.19983deepin23版本提升不能在使用请升级,Linux偷懒升级方法

    安装wineQQ8.9.19983deepin23版本后提示,不在提供服务请升级. 第一步 前往QQ官方下载Windows最先版本QQ https://qd.myapp.com/myapp/qqtea ...

  3. SpringBoot:缓存注解@Cacheable详解

    1.查看@Cacheable @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @ ...

  4. 利用python爬虫爬取图片并且制作马赛克拼图

    想在妹子生日送妹子一张用零食(或者食物类好看的图片)拼成的马赛克拼图,因此探索了一番= =. 首先需要一个软件来制作马赛克拼图,这里使用Foto-Mosaik-Edda(网上也有在线制作的网站,但是我 ...

  5. 文件系统EXT3,EXT4和XFS的区别

    1. EXT3 (1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件 (2)Ext3目前只支持32000个子目录 (3)Ext3文件系统使用32位空间记录块 ...

  6. ZooKeeper入门实战教程(一)-介绍与核心概念

    1.ZooKeeper介绍与核心概念1.1 简介ZooKeeper最为主要的使用场景,是作为分布式系统的分布式协同服务.在学习zookeeper之前,先要对分布式系统的概念有所了解,否则你将完全不知道 ...

  7. 从编程哲学到开发应用:Spring的初步应用

    一.前言 在学习Spring的过程中,我们学习了很多东西,可是实际应用中,我们究竟用到了那些?常用的又是那种方法呢? 二.书上与开发的差异 1.IOC 1) IOC,控制反转,是Spring框架的核心 ...

  8. OpenStack创建网络和虚拟机、dhcp设备、虚拟路由器、虚拟机访问外网原理分析

    创建网络和虚拟机流程: 1.创建网络和子网 背后发生了什么: Neutron让控制节点上针对此子网的dhcp(虚拟设备)启动,用于给该子网下的实例分配ip 2.生成虚拟机 背后发生了什么: 用户通过G ...

  9. 关于最新版本的flutter在安卓打包的问题解决方法

    1.集成友盟push提示androidx版本号不一致,需在gradle文件中手动选择即可,如下 buildscript { repositories { google() jcenter() mave ...

  10. Mac下 VirtualBox(VBox) 的 Centos6/7 共享文件夹配置

    vbox 安装虚拟机请移步这里. https://blog.csdn.net/a47846800/article/details/88847466 前期准备: 远程登录 centos 系统, 分边执行 ...