JAVA專案映象構建

阿哲技术之路發表於2024-03-28

JAVA專案映象構建:Tomcat

tomcat目錄檔案:1.apache-tomcat-8.5.43.tar.gz 2.Dockerfile 3.Dockerfile2 4.ROOT.war

Dockerfile(環境映象)

FROM centos:7

MAINTAINER www.ctnrs.com

ENV VERSION=8.5.43

RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \

yum clean all && \

rm -rf /var/cache/yum/*

ADD apache-tomcat-${VERSION}.tar.gz /usr/local/

RUN mv /usr/local/apache-tomcat-${VERSION} /usr/local/tomcat && \

sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && \

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH $PATH:/usr/local/tomcat/bin

WORKDIR /usr/local/tomcat

EXPOSE 8080

CMD ["catalina.sh", "run"]

Dockerfile2 (基於環境映象打包的專案映象)

FROM tomcat:v1

RUN rm -rf /usr/local/tomcat/webapps/*

COPY ROOT.war /usr/local/tomcat/webapps

構建映象

cd tomcat/

docker build -t tomcat:v1 .

docker build -t tomcat:v2 -f Dockerfile2 .

docker run -d -p 8888:8080 --name tomcat tomcat:v2

訪問tomcat 8888埠

http://192.168.0.11:8888/

JAVA微服務映象構建:Jar

java目錄檔案:1.Dockerfile 2.hello.jar

Dockerfile(基於環境映象打包的專案映象)

FROM java:8-jdk-alpine

LABEL maintainer www.ctnrs.com

ENV JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \

apk add -U tzdata && \

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

COPY hello.jar /

EXPOSE 8888

CMD ["/bin/sh", "-c", "java -jar $JAVA_OPTS /hello.jar"]

編寫Dockerfile最佳實踐

減少映象層:一次RUN指令形成新的一層,儘量Shell命令都寫在一行,減少映象層。

最佳化映象大小:一次RUN形成新的一層,如果沒有在同一層刪除,無論檔案是否最後刪除, 都會帶到下一層,所以要在每一層清理對應的殘留資料,減小映象大小。

減少網路傳輸時間:例如軟體包、mvn倉庫等

多階段構建:程式碼編譯、部署在一個Dockerfile完成,只會保留部署階段產生資料。

選擇最小的基礎映象:例如alpine

相關文章