制作Docker镜像,用来编译OpenJDK11源码

今天我们就来看下Docker镜像bolingcavalry/buildopenjdk11:0.0.2的制作过程,看看它做了哪些事情来简化下载过程;

参考文章

如果您打算在真实Linxu环境下编译OpenJDK11源码,可以参照《Ubuntu环境编辑OpenJDK11源码》;

环境信息

  1. 操作系统:Ubuntu 16.04.5 LTS;

  2. Docker:18.06.1-ce;

准备材料

本次镜像用到了以下材料:

  1. Dockerfile:制作Docker镜像的脚本文件;

  2. cmd.sh:容器启动后执行的命令脚本;

  3. jdk10安装包,在编译OpenJDK11的时候,需要先装好jdk10作为bootjdk;

  4. source.list:linux源;

您可以选择直接从GitHub下载上述所有内容,地址和链接信息如下表所示:

| 名称 | 链接 | 备注 |

| :-- | :-- | :-- |

| 项目主页 | https://github.com/zq2599/buildopenjdk11 | 该项目在GitHub上的主页 |

| git仓库地址(https) | https://github.com/zq2599/buildopenjdk11.git | 该项目源码的仓库地址,https协议 |

| git仓库地址(ssh) | [email protected]:zq2599/buildopenjdk11.git | 该项目源码的仓库地址,ssh协议 |

要注意的问题

jdk10安装文件jdk-10_linux-x64_bin_ri.tar.gz有186兆,因此做成的镜像也很大,用户下载镜像时,一旦网络问题下载失败,docker会自动重试,此时是重新下载,这意味着之前的下载都白做了,为了缓解这个问题,可以把文件分割成多个小文件,这样虽然整体大小不变,但失败时重下载的文件是很小的,在linux环境执行以下命令,将文件分割成多个最大10兆的文件:

split -b 10m jdk-10_linux-x64_bin_ri.tar.gz jdk-10_linux-x64_bin_ri-

编写Dockerfile

Dockerfile内容如下,主要是安装必要的应用,另外关键的操作都有详细的注释,就不多说了:

#Docker image of source for OpenJDK

VERSION 0.0.1

Author: bolingcavalry

#基础镜像使用ubuntu:16.04

FROM ubuntu:16.04

#作者

MAINTAINER BolingCavalry [email protected]

#定义boot jdk文件名

ENV BOOT_JDK_FILE_NAME jdk-10_linux-x64_bin_ri

#定义boot jdk安装目录

ENV BOOT_JDK_PATH /usr/lib/jvm

#定义boot jdk解压后的包名

ENV BOOT_JDK_PACKAGE_NAME jdk-10

#boot jdk的完全路径

ENV BOOT_JDK_HOME B O O T J D K P A T H / BOOT_JDK_PATH/ BOOTJDKPATH/BOOT_JDK_PACKAGE_NAME

#boot jdk相关的环境变量

ENV JAVA_HOME $BOOT_JDK_HOME

ENV JRE_HOME $BOOT_JDK_HOME/jre

ENV CLASSPATH .: B O O T J D K H O M E / l i b : BOOT_JDK_HOME/lib:

你可能感兴趣的:(程序员,docker,容器,运维)