Docker标准镜像制作
- 由于hub.docker.com上提供的官方镜像为open-jdk,因此和程序运行时多少会有点小问题;
- 之前使用基于alpine的基础镜像来制作应用镜像时会遇到一些小麻烦,主要是因为和linux 多有不同,并且不能直接运行Oracle jdk;
综上所述,因此决定使用基于CentOS来构建镜像。
初始化镜像
拉取基础镜像
1 | docker pull centos |
自定义jdk版本
1 | #解压 |
最后再重新打包
1 | tar -zcvf jre-8u191-linux-x64.tar.gz jre1.8.0_191/ |
构建JDK
- 编写Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18cat <<EOF > Dockerfile
FROM centos:latest
MAINTAINER by medivh
RUN rm -f /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && mkdir /usr/local/java && useradd joy
#相对路径jar,把java添加到容器中
ADD jre-8u191-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_91
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
USER joy
RUN mkdir /home/joy/logs && mkdir /home/joy/src
EOF - 构建镜像因为镜像需要推送到仓库,因此在构建镜像的时候直接打标签了。
1
docker build -t 192.168.1.232:5000/base/jdk:1.8.0_91_v.0.5 .
构建服务镜像
1 | # Version: 0.0.1 |
文件说明
- from 基于之前构建好的jdk镜像
- 修改时区
- workdir 设定工作目录,类似于cd命令
- ADD 添加war包或者jar包
- EXPOSE 暴露端口,默认设置为8080
- ENTRYPOINT 程序启动相关参数