Java工程师如何在Docker上进行开发

Java工程师如何在Docker上进行开发?本文能让你以最小的日常开支和预备知识就可以把Docker和Java结合使用。

安装

现在有很多的Java Web框架,挑选一个非常小的框架,选择Spark吧!它是一款基于Java-8的微型Sinatra框架。如果你去阅读Spark的说明文档,会了解它是用Maven作为其构建工具。

在本示例里,会利用Maven和Docker的分层文件系统(UnionFS),从零开始安装一切。与此同时,当重新编译变动的内容时,也需要一些时间。

因此,你需要的预备知识是:无需Java,无需Maven,只需Docker。

源代码和配置文件

本例中,你必须得添加以下3个文件:

  • Maven配置:pom.xml
  • Java文件:Hello.java
  • Dockerfile

如果觉得篇幅过长,可以直接[克隆如下repo]:

git clone https://github.com/giantswarm/sparkexample

pom.xml

pom.xml文件包含一个基本的Maven配置。这个大家都很熟悉的了!它用Java1.8编译器配置Spark的依赖项,并用所有依赖项创建一个大的jar包。有多大啊?不过肯定要比希云的微镜像大!如果你还不知道希云的微镜像,那你就快OUT了。微镜像地址:http://csphere.cn/hub

Hello.java

pom.xml文件定义了一个类名叫:sparkexample.Hello的 main class(主类)。在子路径src/main/java/sparkexample/下创建Hello.java文件。

正如你看到的,这是最新的Java代码:静态导入和lambda表达式,使该例子非常紧凑。类包含一个main method(主要方法),响应root请求("/")。像HelloWorld一样普通,响应只是简单的字符串。

Dockerfile

最后一个也是,最重要的一个文件:Dockerfile

FROM java:8

# Install maven
RUN apt-get update
RUN apt-get install -y maven

WORKDIR /code

# Prepare by downloading dependencies
ADD pom.xml /code/pom.xml
RUN ["mvn", "dependency:resolve"]
RUN ["mvn", "verify"]

# Adding source, compile and package into a fat jar
ADD src /code/src
RUN ["mvn", "package"]

EXPOSE 4567
CMD ["/usr/lib/jvm/java-8-openjdk-amd64/bin/java", "-jar", "target/sparkexample-jar-with-dependencies.jar"] 

基于java8,安装Maven,和构建jar包。(如想构建jdk,jre的docker镜像请查看http://csphere.cn/hub/jdk)。通过添加pom.xml文件解析依赖项实现构建。

实际操作过程中会发现,如果我们不改变pom.xml而想重新编译app,之前的步骤已被缓存,只运行最后的步骤,这将使重编译速度更快。这点docker的优势非常明显!

创建和运行

有以上3个文件后,创建Docker镜像就变得非常简单:

    $ docker build -t csphere/sparkexample .

注意:第一次构建时,需要等一会。需要先下载安装Maven,还会下载所有项目依赖项。以后每次编译启动只需要几秒钟就可以了,不要问我为什么为什么只需几秒,因为有缓存。

镜像创建好后,启动容器:

    $ docker run -d -p 4567:4567 csphere/sparkexample

测试:

    $ curl localhost:4567
    hello from sparkjava.com 

创建镜像就这么简单!现在,可以去修改源代码,再重新编译,是不是很简单,很棒呢?!

结论

虽然这只是个基础的例子,但是我们仍然希望,你敢于尝试并且热衷于在Docker上进行Java开发。了解更多docker相关知识,请访问希云官方网站:https://csphere.cn

文章转载自 开源中国社区[https://www.oschina.net]

时间: 2024-10-27 22:32:22

Java工程师如何在Docker上进行开发的相关文章

如何在Ubuntu上安装Apache,MySQL,PHP,Nginx,HAProxy,以及如何在docker上安装LAMP

如何在Ubuntu上安装Apache,MySQL,PHP,Nginx,HAProxy,以及如何在docker上安装LAMP   在Ubuntu上安装LAMP: https://help.ubuntu.com/community/ApacheMySQLPHPhttps://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntuhttp://www.make

求大声解答-hadoop如何在idea上配置开发

问题描述 hadoop如何在idea上配置开发 hadoop如何实现在idea上配置开发,hadoop环境已经搭建好

成为一名月入过万的Java工程师有多难?

Java语言经历了20多年的发展,在C.C++语言占据大半江山的情况下横空出世,杀出了一条血路,面临PHP.Python.Ruby等动态语言也毫不显怯,至今仍是最受欢迎的编程语言之一,可以说Java是面向对象语言的后起之秀和典范. 企业,特别是中大型企业对Java工程师的需求仿佛从来没有厌倦,大量的Java技术人才缺口也给了IT行业从业者一个很好的选项:目前来看,精进自己的Java技术,就不愁没有工作. 为何多年来企业对Java工程师的需求就没有衰退过呢? 原因可能有以下几方面.首先Java具有

如何在Mac上卸载Java?

  如何在Mac上卸载Java?下面PC6苹果网小编给大家带来如何在Mac上卸载已经安装了的java的详细教程,主要由以下两种方法: 一.通过删除 Java 插件文件卸载 Oracle Java 注意:卸载 Oracle Java 涉及到删除 Java 插件文件 JavaAppletPlugin.plugin.要卸载 Java,必须具有管理员权限. 1.单击位于停靠栏中的 Finder 图标 2.单击边栏中的应用程序选项卡 3.在搜索框中,输入 JavaAppletPlugin.plugin 4

如何在Mac上清除Java高速缓存?

  如何在Mac上清除Java高速缓存?清除 Java 高速缓存可强制浏览器加载最新版本的 Java 小应用程序和应用程序.下面小编给大家带来如何在Mac上清除 Java 高速缓存的详细步骤: 1.单击顶部的 Apple 图标 2.单击系统首选项图标以打开 3.单击位于其他部分下的 Java 图标以打开 Java 控制面板 4.在 Java 控制面板中,单击"Internet 临时文件"下的设置 5.在"Internet 临时文件"窗口中单击删除文件按钮 6.这将打

VSTO开发,如何在Word上实现随手涂鸦这个功能??

问题描述 VSTO开发,如何在Word2007上实现随手涂鸦这个功能?? 解决方案

java-如何在Java的通用权限管理系统上实现用户的禁用和激活?

问题描述 如何在Java的通用权限管理系统上实现用户的禁用和激活? 在做一个通用权限管理系统,用户管理的用户禁用和用户激活的实现思路是什么 解决方案 我个人感觉,你的问题就跟,用户的挂失与激活差不多,. 我的想法是在数据库中再建立一个禁用用户表,如果禁用把这个用户的信息添加到这个禁用的表中,如果激活,从这个表中删除就行了

Java -- 在Eclipse上使用XFire开发WebService

    终于,使用Java完成了一个WebService的例子,其中的一个非常小的问题,折腾了我将近一天的时间.下面给出步骤,说明在Java平台上如何开发WebService.     采用的工具:Eclipse3.1.2 + Tomcat5.5 + XFire1.1 .使用XFire开发WebService应该说非常的容易,只需要按照下面例子的步骤来做: (1)在Eclipse中新建一个dynamic Web Project ,假设名为XFireZhuweiTest. (2)导入XFire用户

如何在 linux 上配置持续集成服务 - Drone

如何在 linux 上配置持续集成服务 - Drone 如果你对一次又一次的克隆.构建.测试和部署代码感到厌倦了,可以考虑一下持续集成.持续集成简称 CI,是一种像我们一样的频繁提交的代码库,构建.测试和部署的软件工程实践.CI 可以帮助我们快速的集成新代码到已有的代码库.如果这个过程是自动化进行的,那么就会提高开发的速度,因为这可以减少开发人员手工构建和测试的时间.Drone 是一个自由开源项目,用来提供一个非常棒的持续集成服务的环境,采用 Apache 2.0 协议发布.它已经集成近很多代码