赞
踩
正常情况下,我们使用Docker打包Java服务,可以直接在Dockerfile中选择"Java:8"基础镜像,其Linux发行版本采用的是CentOS系统。
构建此自定义镜像的目的:
因此我需要一个满足上述条件的基础镜像,我的服务在打包部署时,Dockerfile直接FROM这个基础镜像即可。
在本机或者服务器上创建一个基础镜像的文件夹“ubuntu-java-baseimage”,存放我们要用到的jdk包、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
docker build -t docker build -t java-ubuntu-baseimage:1.0.0 .
#FROM java:8
FROM java-ubuntu-baseimage:1.0.0
...
再执行对项目模块的打包即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。