Docker最全教程之使用Docker搭建Java开发环境

前言

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

Java

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

注意:值得注意的是,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.*;
//加入Java开发交流君样:756584822一起吹水聊天
//类public class Hello{//程序入口public static void main(String[] args){//打印字符串(控制台)System.out.println("Hello World!");//打印当前时间System.out.println(new Date());
//加入Java开发交流君样:756584822一起吹水聊天}}

这里顺便说下,我们使用万能编辑器VisualStudio Code来编辑上述代码,支持代码高亮,同时还会自动推荐相关扩展,如下所示:在这里插入图片描述
并且还提供完善的文档教程:在这里插入图片描述

编写Dockerfile

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

# 基于Java 9FROM java:9# 设置工作目录WORKDIR /app//加入Java开发交流君样:756584822一起吹水聊天# 复制文件到工作目录COPY . /app# 设置Java环境变量ENV PATH=$PATH:$JAVA_HOME/binENV JRE_HOME=${JAVA_HOME}/jreENV 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在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OrganicsDelivery总结

一、UserControl调用所在页面的其他内容(代理实现) UserControl代码 Codeusing System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;…

面试官:Redis 内存数据满了,会宕机吗?

背景Redis 数据库内存数据满了,会宕机吗?答案是:不会让它出现存满的情况,在使用Redis的时候我们要配置Redis能使用的最大的内存大小,存到一定容量的时候还有Redis的内存淘汰策略呢,还有LRU算法进行淘汰&…

你爱我吗? | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅(图源你这样真的很机车诶,侵权删)

Java开发和嵌入式开发该如何选择

首先,Java开发和嵌入式开发都是目前IT行业内比较常见的开发岗位,也都有大量的从业人员,所以从就业的角度来看,学习Java开发和嵌入式开发都是不错的选择。Java语言的应用领域包括Web开发、Android开发和大数据开发等领域&#xff0…

小米和腾讯的.NET笔面试题哪个更难?可自测附答案

统计了下,当下正在招.NET的大厂有腾讯、京东、唯品会、阿里、百度、华为、小米、网易、特斯拉等。进大厂、拿高薪、享福利,应该是.NET程序员普世梦想了。金九银十将至,还不赶紧刷题准备?即使等金三银四,下面这些笔面试…

熬夜变傻有科学依据,人类睡觉时会被“洗脑”,科学家首次拍下全程

全世界只有3.14 % 的人关注了青少年数学之旅你睡着的时候,真的被洗了脑。这次,波士顿大学的科学家们,史无前例地拍下了清洗过程:红色是血液,蓝色是脑脊液。厉害的是从前没有发现过,血液会周期性地大量流出大…

程序员的人生

今天在网上看到这么一张图片,让人吃惊不小,我也是一名典型的学生出身的程序员在这个行业做了也接近三年了,也曾经犹豫过,曾经迷茫过,曾经思考过自己以后的人生,也是几乎和下面这张图片的经历一致&#xff0…

到家自动充电,拜拜充电线!东京大学开发自动充电房间,能量成为“与空气一样的东西”...

全世界只有3.14 % 的人关注了青少年数学之旅每天下班回家第一件事,是不是给手机充电?但是充电线在哪,你找得到吗?如果现在告诉你,一回到家,手机就能自动充电,简直就是整理苦手的救星&#xff01…

JS图片放大查看效果!

http://bbs.blueidea.com/thread-2812683-1-1.htmlhttp://bbs.blueidea.com/thread-2814846-1-1.html应用效果<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><title>Javascript Images zoom-out view sample.…

从零开始学习jQuery (九) jQuery工具函数 【转】

一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案, 即使你会使用jQuery也能在阅读中发现些许秘籍. 我们经常要使用脚本处理各种业务逻辑, 最常见的就是数组和对象的操作. jQuery工具函数为我们操作对象和数组提供了便利条件. 二.前言 大…

设计模式之装饰器

装饰器模式介绍俄罗斯套娃装饰器的核心就是在不改原有类的基础上给类新增功能。可以避免继承导致的子类过多&#xff0c;可避免AOP带来的复杂性。装饰器主要解决的是直接继承下因功能的不断横向扩展导致子类膨胀的问题&#xff0c;而是用装饰器模式后就会比直接继承显得更加灵活…

zookeeper集群部署监控与选举同步流程等工作原理

部署一个zookeeper集群&#xff0c;要多简单就能有多简单&#xff08;下载压缩包&#xff0c;解压&#xff0c;修改配置文件zoo.cfg,执行启动脚本&#xff09;&#xff0c;但是想要真的把这套东西玩好了&#xff0c;还是需要费些功夫研究一番的。就跟自己搭建一个lnmp的站点&am…

手把手教出欧拉!数学界最伟大的老师惨遭全网歪曲抹黑,奇葩说陈铭一句话揭露真相.........

全世界只有3.14 % 的人关注了青少年数学之旅说到伟大的老师你首先想到的是谁&#xff1f;万世师表的孔子&#xff1f;古代先哲亚里士多德&#xff1f;支援山区的青年教师&#xff1f;还是高三时每天在你耳边督促你订正错题本的班主任&#xff1f;在这个光荣的行列中&#xff0c…

Hello Blazor:(8)启用深色模式

前言上次&#xff0c;在“集成Tailwind CSS”时&#xff0c;我发现tailwind.config.js配置文件有这样一个选项&#xff1a;darkMode: false, // or media or class查看官方文档&#xff0c;原来这是用来启用深色模式的配置。既然深色模式几乎成了所有网站和软件的标配&#xff…

超越Linux!华为鸿蒙明年将成“第五大操作系统”,网友:何时超过iOS?

全世界只有3.14 % 的人关注了青少年数学之旅今年8月的华为开发者大会上&#xff0c;鸿蒙OS正式亮相&#xff0c;这是全世界第一个基于微内核的全场景分布式操作系统。余承东曾表示&#xff1a;华为手机优先使用安卓生态&#xff0c;一旦受实体名单影响安卓不能用&#xff0c;一…

关于 .NET 与 JAVA 在 JIT 编译上的一些差异

最近因为公司的一些原因&#xff0c;我也开始学习一些 JAVA 的知识。虽然我一直是以 .NET 语言为主的程序员&#xff0c;但是我并不排斥任何其它语言。在此并不讨论 JAVA .NET 的好坏&#xff0c;仅仅是对 .NET 跟 JAVA 程序的编译执行过程进行一些简单的介绍跟比较。因为有些内…

在鹅厂,我作为一个Java 程序员每天都在摸鱼!!!

作为一名 在大、中、小微企业都待过 的 Java 开发者&#xff0c;今天和大家分享下自己在不同公司的工作日常和收获。包括一些个人积累的工作提升经验&#xff0c;以及一些 Java 学习的方法和资源。 先从我的第一份 Java 开发实习工作说起吧~ 实习生工作日常 我是在大二暑期开…

心中一万只草泥马在奔腾是种怎样的体验?| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅&#xff08;图源横店街道办主任&#xff0c;侵权删&#xff09;

iOS工程中的info.plist文件的完整研究

原地址&#xff1a;http://blog.sina.com.cn/s/blog_947c4a9f0100zf41.html 们建立一个工程后&#xff0c;会在Supporting files下面看到一个"工程名-Info.plist"的文件&#xff0c;这个是对工程做一些运行期配置的文件&#xff0c;很重要&#xff0c;不能删除。 如果…

不会自动化UI测试?不会编程?没问题,会造句就行!

上次&#xff0c;我们介绍了用于Web应用程序自动化测试的工具Playwright for .NET。但是直接使用它来编写测试用例&#xff0c;代码比较凌乱&#xff0c;后期也不好维护。因此&#xff0c;我们利用SpecFlow让测试用例更好理解和维护。1.SpecFlow介绍SpecFlow是.Net平台下用于行…