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"]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM