docker 的java编译环境构建详细介绍

用Dockerfile 构建一个java的编译环境,这里整理下实现步骤:

1、包括以下软件包

  1. ubuntu
  2. jdk
  3. maven
  4. svn

2、jdk、maven 需要手动下载,下载之后分别为

jdk-8u51-linux-x64.gz
apache-maven-3.3.3-bin.tar.gz

3、创建一个Dockerfile文件,包含以下内容

FROM ubuntu
RUN apt-get update
RUN apt-get -y install subversion
ADD jdk-8u51-linux-x64.gz /usr/local
ADD apache-maven-3.3.3-bin.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk1.8.0_51
ENV M2_HOME /usr/local/apache-maven-3.3.3
ENV PATH $PATH:$JAVA_HOME/bin:$M2_HOME/bin

简单的说一下上面的意思,就是基于ubuntu创建一个镜像,然后更新软件源,接着安装svn,然后把下载的jdk、maven添加到镜像,并放置到/usr/local目录,这里我添加的是一个压缩包,在构建镜像的适合,系统会自动解压,并且镜像里面也不会有压缩的文件,最后再设置环境变量

4、最后开始构建镜像

docker build -t dev .

构建完成之后,可以用Docker images看到多了一个叫dev的镜像,这就是我们创建的,这里要注意的一点就是Dockerfile文件跟之前下载的压缩包是在同一个目录的,而且运行上面打包命令的时候也要确保在Dockerfile所在目录。

5、启动

docker run -i -t dev

启动之后,输入Java 、mvn、svn,是不是都装好了,之后就可以在这个容器里面把代码从svn上面下载下来,然后再通过maven打包,然后部署到包含tomcat的容器里面。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

时间: 2016-11-11

详解docker镜像centos7配置Java运行环境

1.拉取centos镜像 docker pull centos:7 2.基于拉取到的镜像运行一个容器 docker run -it --name mycentos docker.io/centos:7 /bin/bash 运行起来就直接进入了容器的交互界面 3.容器中安装jdk 首先查询可用的jdk版本 yum search java|grep jdk 根据搜索到jdk进行安装 yum install java-1.7.0-openjdk 安装完成之后可以不用配置环境变量,因为安装完成之后貌似是

Docker学习笔记之Docker部署Java web系统

Docker部署Java Web系统 1.在root目录下创建一个路径test/app mkdir test && cd test&& mkdir app &&cd app 2.将apache-tomcat-7.0.29.tar.gz及jdk-7u25-linux-x64.tar.gz拷贝 到app目录下 3.解压两个tar.gz文件 tar -zxvf apache-tomcat-7.0.29.tar.gz tar -zxvf jdk-7u25-linux

java9学习系列之在docker中如何运行java9

前言 本文将给大家详细介绍下如何在docker中运行java9的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 镜像 docker pull openjdk:9-jdk 启动 docker run -it openjdk:9-jdk /bin/jshell 然后就可以正常使用jshell了,比如 Sep 22, 2017 2:16:12 AM java.util.prefs.FileSystemPreferences$1 run INFO: Created user

在docker中部署tomcat并且部署java应用程序的步骤详解

先给大家简单说下Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创建Dockerfile,命令如:touch Docker

Docker下搭建一个JAVA Tomcat运行环境的方法

前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常方便.因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法.更多的玩法还有大规模 web 应用.数据库部署.持续部署.集群.测试环境.面向服务的云计算.虚拟桌面 VDI 等等. 主观的印象:Docker 使用 Go 语言编写,用 cgroup 实现

详解使用Docker搭建Java Web运行环境

这周末体验了一下挺火的Docker技术,记录学习笔记. >Docker是干什么的 Docker 是一个基于Linux容器(LXC-linux container)的高级容器引擎,基于go语言开发, 源代码托管在 Github 上, 遵从Apache2.0协议开源.Docker的目标是实现轻量级的操作系统虚拟化解决方案. 学习Docker首先要了解几个概念: 镜像-Docker的镜像和常见的系统ISO镜像类似,包含了应用程序的信息: 容器-容器相当于一个可以运行起来的虚拟机,应用程序运行在容器中,

Docker学习之基于Dockerfile搭建JAVA Tomcat运行环境的方法

前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个java tomcat运行环境,虽然也初见成效,但很累人.如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而不为呢.好在Docker提供了Dockerfile作为构建Docker镜像脚本,避免人们一行一行的输入,真是善莫大焉.Dockerfile脚本可以做到随时维护修改,即可以分享,更有利于在模板化,更不用说传输了,好处那是一大箩筐! 最终目的:打造一个支持SSH终端登录.Tomcat7自动运行的Docke

Docker搭建前端Java的开发环境详解

一.解决的痛点 1.免搭建后端开发环境. 2.开发环境改变只需要改变镜像就能同步更新. 3.不需要eclipse等IDE工具. 4.切换开发项目 二.解决思路 利用docker启动Ubuntu镜像,在容器中搭建好项目需要的开发环境,使用挂载卷将本地代码挂载到容器中,使用容器中的环境编译运行代码,宿主机通过 docker 暴漏出的端口访问容器中的服务,这样前端的开发机上就只需要部署docker就搞定了. 三.关于docker 了解docker 本文并不打算细讲docker的知识,相关的文章有很多,

Dockerfile 部署java web的环境详解

Dockerfile 构建java web 环境 Dockfile 介绍: Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令翻译真正的Linux命令.Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile.Docker程序将读取Dockerfile,根据指令生成定制的image.相比image这种黑盒子,Doc

Java 使用Docker时经常遇到的五个问题

Docker现在很火,容器技术看上不无所不能,但这实际上是一种误解,不要被炒作出来的泡沫迷住双眼,本文抛去炒作,理性地从Java程序员的角度,列举出Docker目前的五大误区,帮助你更好地理解Docker的优势和问题. 抛去那些媒体和厂商们的炒作,我们如何才能更好更理性的使用Docker? Docker最近备受关注,原因显而易见.如何成功交付代码一直困扰着大家.传统的容器技术在众多需求和模板中乱成一团.而Docker可以简单且 重复的创建容器.相比其它容器,使用Docker可以更快.更自然的交付

java操作mongodb时,对象bean和DBObject相互转换的方法(推荐)

如下所示: package com.iqbon.spider.util; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.Date; import org.apache.commons.beanutils.BeanUtils; import com.mongodb.BasicDBObject; import com.mongodb.DBObje

Java异常处理运行时异常(RuntimeException)详解及实例

  Java异常处理运行时异常(RuntimeException)详解及实例 RuntimeException RunntimeException的子类: ClassCastException 多态中,可以使用Instanceof 判断,进行规避 ArithmeticException 进行if判断,如果除数为0,进行return NullPointerException 进行if判断,是否为null ArrayIndexOutOfBoundsException 使用数组length属性,避免越

Java String转换时为null的解决方法

开发中经常遇到从集合类List.Map中取出数据转换为String的问题,这里如果处理不好,经常会遇到空指针异常java.lang.NullPointerException,在此总结一下常用转换为String的方法,以及转换后如何对其进行判null使用的问题. Java中对象转换为String的常用方法: 方法一:String  objStr  =  (String) obj: 强制类型转换,对象obj为null,结果也为null,但是obj必须保证其本质是String类型的值,即可转换的值.

java拼接字符串时去掉最后一个多余逗号的方法

本文实例讲述了java拼接字符串时去掉最后一个多余逗号的方法.分享给大家供大家参考.具体分析如下: 先看下面这段代码: for (int t = 0; t < memberLen; t++) { memTemp = stafferMap.get(strMember[t]); if(memTemp != null){ memberNames += memTemp + ","; } } 以上的代码,拼接的字符串会多一个",",比如:"str1,str2,

Java 覆盖equals时总要覆盖hashcode

Java 覆盖equals时总要覆盖hashcode 最近学习java 的基础知识,碰到Java 覆盖equals时总要覆盖hashcode时候有许多疑问,经过和同事直接讨论及上网查询的资料,这里整理下,也好帮助大家理解,代码中有说明. 具体实现代码: package cn.xf.cp.ch02.item9; import java.util.HashMap; import java.util.Map; public class PhoneNumber { private final short

java虚拟机运行时数据区分析

JVMmemorymodel 这篇文章主要介绍在JVM规范中描述的运行时数据区(RuntimeDataAreas).这些区域设计用来存储被JVM自身或者在JVM上运行的程序所是用的数据. 我们先总览JVM,然后介绍下字节码,最后介绍不同的数据区域. 总览 JVM作为操作系统的抽象,保证同样的代码在不同的硬件或操作系统上的行为一致. 比如: 对于基本类型int,无论在16位/32位/64位操作系统上,都是一个32位有符号整数.范围从-2^31到2^31-1 无论操作系统或者硬件是大字节序还是小字节

Java提示解析时已到达文件结尾的解决方法

Java提示解析时已到达文件结尾怎么办?这里我们将给大家介绍详细的解决方法. 首先,找到已经编写好的文件,运行,看到控制台,给出如下提示. 向下查看控制台,看到控制台,给出如下提示. 接着,找到文件所在行,进行检查,检查该处是否有什么错误. 如果第二步没有检查到任何的错误,那么就是上个class类处出现了问题.向上一个类检查,就一定可以发现问题,主要是因为,解析时已到达文件结尾,是因为,在后一个类已经执行了,程序还没有结束. 然后,将第一类中却上的结尾符号"}"添加上,再次运行,发现程

Java导出excel时合并同一列中相同内容的行思路详解

一.有时候导出Excel时需要按类别导出,一大类下好几个小类,小类下又有好几个小小类,就像下图: 要实现这个也不难, 思路如下:按照大类来循环,如上就是按照张江校区.徐汇校区.临港校区三个大类循环,然后再处理小类,因为本例小小类不涉及合并,所以只涉及处理小类,如果需要处理小小类,还需要在处理一下,具体实现原理同小类: 每次循环时记录下此次循环的房屋类型和上次循环的房屋类型,两者相同时,要合并的结束行++,否者,说明这个房屋类型已经循环完毕(前提是各类型都按顺序order by 了,保证相同类型相

Java在运行时识别类型信息的方法详解

前言 在日常的学习工作当中,有一些知识是我们在读书的时候就能够习得:但有一些知识不是的,需要在实践的时候才能得到真知--这或许就是王阳明提倡的"知行合一". 在Java中,并不是所有的类型信息都能在编译阶段明确,有一些类型信息需要在运行时才能确定,这种机制被称为RTTI,英文全称为Run-Time Type Identification,即运行时类型识别,有没有一点"知行合一"的味道?运行时类型识别主要由Class类实现. 01 Class类 在Java中,我们常用