docker把war包打成鏡像的兩種方式

不清楚dockerfile的各種命令可以參考:
https://juejin.im/post/5e60745d518825492e4965ed

注意:請保持dockerfile文件和war包等資源在同一個目錄下,不然打包會找不到文件,
如果不知道容器內部的文件目錄路徑,我們可以先不寫dockerfile,先啓動基礎鏡像的容器
使用以下命令可以進入容器內部

docker exec -it 容器唯一id 容器啓動方式
#舉例
docker exec -it addcdmfd1 /bin/sh

如果不知道容器啓動方式,可以使用docker ps查看
在這裏插入圖片描述

1.war包自帶tomcat鏡像

第一種方式需要設置啓動方式,就是在dockerfile的最後一行執行命令

#基礎鏡像
#我們打包需要依賴基礎鏡像
FROM openjdk:8
#將虛擬機的war包,cp到docker容器內部
COPY testjar /opt/app/app.jar
#說明容器開放的端口
EXPOSE 80
#指定docker容器時區
RUN echo "Asia/shanghai" > /etc/timezone;
#啓動方式一
#容器啓動後執行的命令,運行項目且指定spring配置文件環境
# ENTRYPOINT java -jar /opt/app/app.jar --spring.profiles.active=prod
#啓動方式二
#在虛擬機建立一個shell腳本文件 命名爲starup.sh,內容爲“java -jar /opt/app/app.jar”,將此文件複製到容器內部
COPY start.sh /opt/app/start.sh
# 腳本啓動
ENTRYPOINT sh /opt/app/start.sh

打包使用docker build -t 鏡像名:版本號 .

#注意有個點不要忘了寫
docker build -t test:latest .

2.war去除tomcat依賴

第二種方式無需配置啓動方式,默認使用tomcat的catalina.sh文件啓動

#基礎鏡像
FROM  docker.io/tomcat:9.0.31-jdk8-openjdk
#將虛擬機內的war包複製到tomcat容器的webapps目錄下
ADD a.war webapps/b.war
#可以設置tomcat調優,併發數等,或修改tomcat端口號,然後替換掉容器內部的server.xml文件即可
#ADD server.xml conf/server.xml
#使用上海時區
RUN cp /usr/share/zoneinfo/Asia/Shanghai    /etc/localtime
#啓動環境變量,jvm調優,可省略,參數根據服務器的性能和cpu決定
ENV JAVA_OPTS="-server -Xmx1000M -Xms1000M -Xmn600M -Xss256k -XX:MetaspaceSize=100M  -XX:MaxMetaspaceSize=2100M -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=4M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:ParallelGCThreads=4 -XX:+AggressiveOpts -XX:+UseBiasedLocking -Djava.awt.headless=true"
#啓動命令,默認也是這個,可以不寫
#CMD ["catalina.sh","run"]

打包使用docker build -t 鏡像名:版本號 .

#注意有個點不要忘了寫
docker build -t test:latest .

打包過程中,會按照你的文件裏的指令一步一步進行,直到成功或失敗

在這裏插入圖片描述

打包完成
在這裏插入圖片描述
啓動:
在這裏插入圖片描述
docker run -d -p 8080:8080 --name 應用名 鏡像id
-d後臺啓動
-p暴露端口,容器內部端口暴露帶虛擬機的端口
–name指定應用名

訪問:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章