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

前言


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


本篇仅作探索,希望对大家有所帮助。




目录

 

  • Java

  • 官方镜像

  • 各语言镜像比较

  • 使用Docker搭建Java开发环境

  • 编写Hello world!

  • 编写Dockerfile

  • 构建镜像并执行


Java


Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

目前最新的版本为Java 9,以下为官方文档地址:

https://docs.oracle.com/javase/9/

注意 值得注意的是,Oracle (甲骨文)公司宣布,“2019年1月之后”,如果没有获得Oracel公司的商业许可证,Java SE 8(注:Java SE为Java平台标准版简称)将不会再收到公开更新,也将无法用于“商业或生产用途”。目前收费标准为,对于 PC,每用户每月是 2.5 美元,对于服务器/云部署,每个处理器每月是 25 美元


官方镜像


Java官网镜像地址为:

https://hub.docker.com/_/java

官方介绍无。在Java社区,对Docker的拥抱粒度相对其他语言不是很大,不仅教程相对缺失,而且官方支持力度不大。这一点,大家可以通过搜索引擎进一步了解。不过,还是有许多Java开发者也在拥抱Docker。


各语言镜像比较


写到这里,笔者突发奇想,相对主流的镜像做一个体积比较。

我们可以通过docker images命令来列出本地镜像,同时可以使用参数来进行筛选。

Java

我们可以使用以下命令来查看Java相关镜像的大小:

 

600M左右的体积,相对来说,还是臃肿。我们可以和其他镜像做一些对比:

.NET Core

docker images microsoft/dotnet


运行时镜像200M左右,而且高版本镜像越来越轻量。

Python

docker images python

 

Php

docker images php 


使用Docker搭建Java开发环境


本篇仅做探索,主要解决以下问题:

无需搭建Java开发环境

开发环境变化只需更新镜像即可(比如从Java8改为Java9)

无需安装IDE(比如eclipse

提供一个极简Demo


编写Hello world!


按照码农协会行业定律,初学必写Hello World,以表达对编程世界的敬仰之情。如下面代码所示:

//引入命名空间

import java.util.*;

//

public class Hello{

    //程序入口

    public static void main(String[] args){

        //打印字符串(控制台)

        System.out.println("Hello World!");

        //打印当前时间

        System.out.println(new Date());

 

    }

}

 

这里顺便说下,我们使用万能编辑器VisualStudio Code来编辑上述代码,支持代码高亮,同时还会自动推荐相关扩展,如下所示:

 

并且还提供完善的文档教程:

 


编写Dockerfile



如下所示,示例Dockerfile文件如下:

# 基于Java 9

FROM java:9

 

# 设置工作目录

WORKDIR /app

 

# 复制文件到工作目录

COPY . /app

 

# 设置Java环境变量

ENV PATH=$PATH:$JAVA_HOME/bin

ENV JRE_HOME=${JAVA_HOME}/jre

ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

 

# 编译

RUN ["/usr/lib/jvm/java-9-openjdk-amd64/bin/javac","Hello.java"]

 

# 运行

ENTRYPOINT ["/usr/lib/jvm/java-9-openjdk-amd64/bin/java", "Hello"]

 

构建镜像并执行


接下来,我们可以执行以下命令以构建Docker镜像:

docker build --rm -f "Dockerfile" -t java-hello:latest .

 

构建成功后,我们跑起来看效果:

docker run java-hello:latest

 


转载是一种动力 分享是一种美德

如果喜欢作者的文章,请关注“magiccodes”订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


QQ群:

编程交流群<85318032> 

产品交流群<897857351>


长沙线下技术社区已经创建,有兴趣者可以通过客服加群。接下来,我们会定期组织一些线下技术交流分享会,以飨大家。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容

  • 有时候尽管你努力了,你依然得不到好的结果。 一个人不看运气? 没有志同道合的伙伴,当你走到一定程度,再往后真是寸步难行。
    画玩笑阅读 115评论 0 0
  • 我总在梦里见到你啊我的爱 他们的面庞都蒙了雾除了你 解放路遍布各个城里但忘来此地 德胜门近在眼前却毫不欢喜 大约是...
    花胆大阅读 283评论 0 1
  • 原文链接: https://realcurrencies.wordpress.com/2012/01/10/mut...
    dashuo阅读 450评论 0 0
  • 分子集自由人 负能量小爆棚的周N 怎么才周N啊! ...
    哲神阅读 1,649评论 0 13