Docker - Dockerfile(alpine + openjdk8 )
一直找不到合适的带有jdk的docker镜像,要不就是动辄500M左右的基础镜像,要不就是100M左右,但是里面缺失依赖包,后来找到一个制作好之后只有105M的基础镜像,而且跑大型的java程序也是没有问题的。
FROM alpine:3.9
MAINTAINER docker-build
ENV LANG=C.UTF-8 \
JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk \
PATH=$PATH:/usr/lib/jvm/java-1.8-openjdk/jre/bin \
run_foreground=true
RUN apk add --no-cache openjdk8 && rm -f /etc/apk/repositories
但是这个Dockerfile的制作过程非常慢,不知道是我们服务器的配置源有问题还算是真的网络差。。。下载要1个小时左右,用起来还是挺不错的,作为其他java的基础镜像还是蛮好用的。。。
同时在CSDN上上传了一份,可以下载使用:https://download.csdn.net/download/ITzhangdaopin/12369560
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
openjdk 1.8.0_242 f1b6c0810409 11 days ago 105 MB
$ docker run -d --name alpine_jdk8 f1b6c0810409 sh -c "tail -f /dev/null"
8cc12d1bb0707e33ae89c818b2687d3f013cadfasfafdafa5cff052a148f58
$ docker ps -a |grep jdk8
8cc12d1bb070 f1b6c0810409 "sh -c 'tail -f /d..." 9 seconds ago Up 8 seconds alpine_jdk8
$ docker exec -it 8cc12d1bb070 sh
/ # java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (IcedTea 3.15.0) (Alpine 8.242.08-r0)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
/ # vi -version
vi: unrecognized option: v
BusyBox v1.29.3 (2019-01-24 07:45:07 UTC) multi-call binary.
Usage: vi [OPTIONS] [FILE]...
Edit FILE
-c CMD Initial command to run ($EXINIT also available)
-R Read-only
-H List available features
将启动的docker容器制作成快照;
$ docker export 8cc12d1bb070 > alpine_jdk8.tar
$ ll |grep alpine_jdk8.tar
-rw-r--r--. 1 root root 106116608 Apr 28 07:09 alpine_jdk8.tar
这样输出的快照可以直接在其他环境中直接使用命令,将快照重新导成镜像;
$ cat alpine_jdk8.tar |docker import - openjdk:1.8.0_242 #导入容器快照作为新的镜像
直接在Dockerfile中直接引用即可;
FROM openjdk:1.8.0_242
#FROM java8:centos7
MAINTAINER daopinz
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
# VOLUME /tmp
#设置工作目录,在该指令后的 RUN、CMD、ENTRYPOINT, COPY、ADD 指令都会在该目录执行。如果该目录不存在,则会创建!
WORKDIR /opt/plugin/udp-server/
# 将jar包添加到容器中并更名为app.jar
ADD udp-server-0.0.2-SNAPSHOT.jar app.jar
# 运行jar包
RUN sh -c 'mkdir logs' &&\
sh -c 'mkdir config' &&\
sh -c 'chmod -R 777 logs/' &&\
sh -c 'chmod -R 777 config/'
ENTRYPOINT ["java","-Xms512m","-Xmx512m","-Xmn256m","-Xss256k","-server","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]