一直找不到合適的帶有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"]