Docker 自定义Ubuntu-Java基础镜像

一 概述

正常情况下,我们使用Docker打包Java服务,可以直接在Dockerfile中选择"Java:8"基础镜像,其Linux发行版本采用的是CentOS系统。

构建此自定义镜像的目的:

  • Java服务使用Docker部署;
  • Java程序后台调用一个后台程序执行一些数据处理操作;
  • 该后台程序需要在Linux-Ubuntu20.04上运行;
  • 该后台程序同时依赖了一些第三方库。

因此我需要一个满足上述条件的基础镜像,我的服务在打包部署时,Dockerfile直接FROM这个基础镜像即可。

二 具体操作

在本机或者服务器上创建一个基础镜像的文件夹“ubuntu-java-baseimage”,存放我们要用到的jdk包、Dockerfile。
image.png

1 创建Dockerfile

# 基本镜像,ubuntu:20.04
FROM ubuntu:20.04

# 跳过时区选择(必须执行,否则后续构建镜像时会卡死到时区选择)
ENV DEBIAN_FRONTEND=noninteractive

# 编码格式
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

# 拷贝并解压jdk包
COPY jdk-8u291-linux-x64.tar.gz /opt/
RUN mkdir /usr/lib/jvm
RUN tar -xzvf /opt/jdk-8u291-linux-x64.tar.gz -C /usr/lib/jvm
RUN rm -rf /opt/jdk-8u291-linux-x64.tar.gz

# 配置Java环境
ENV JAVA_HOME /usr/lib/jvm/jdk1.8.0_291
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
RUN java -version

# 指定用户
USER root

# 切换时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 切换到国内镜像源(镜像、容器内部的)
RUN  sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN  apt-get clean

# 安装运行环境,比如一些第三方工具或者Java服务程序所依赖的包
RUN set -x; apt-get update \
   && apt-get install sudo \
   && sudo apt-get update \
   && sudo apt install -y libssl-dev \
   && sudo apt-get install -y libpq-dev \
   && sudo apt-get install libfontconfig1-dev -y \
   && sudo apt-get install libegl1-mesa-dev -y

2 build镜像

docker build -t docker build -t java-ubuntu-baseimage:1.0.0 .

3 项目中更换FROM镜像源

#FROM java:8
FROM java-ubuntu-baseimage:1.0.0
...

再执行对项目模块的打包即可。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值