Docker —— 使用 Dockerfile 制作 Jdk + Tomcat 鏡像


 

 

一、准備好Jdk和Tomcat

apache-tomcat-8.5.50.tar.gz
jdk-8u212-linux-x64.tar.gz

注意:

  • Jdk 和 Tomcat 記得從官網下載,否則制作出來的鏡像容易出現不兼容問題。

    jdk1.8下載:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    tomcat8下載:https://tomcat.apache.org/download-80.cgi

  • 准備修改好的 server.xml (修改連接和線程數),制作鏡像時覆蓋tomcat中的;

  • apache-tomcat-8.5.50.tar.gz、jdk-8u212-linux-x64.tar.gz、Dockerfile放在同一目錄

 

 

二、編寫Dockerfile

內容如下:

# 指定操作的鏡像
FROM centos:7

# 維護者信息
MAINTAINER caoweixiong

# 將 jdk 和 tomcat 添加到鏡像centos的/usr/local/目錄下
ADD jdk-8u212-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.50.tar.gz /usr/local/

# 覆蓋相關文件
COPY server.xml /usr/local/apache-tomcat-8.5.50/conf/

# 添加環境變量
ENV JAVA_HOME /usr/local/jdk1.8.0_212
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.50
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
ENV TZ="Asia/Shanghai"
ENV JAVA_OPTS="\
-server \
-Xms3g \
-Xmx3g \
-Xmn512m \
-Xss512K \
-Dfile.encoding=UTF-8 \
-verbose:gc \
-XX:+UseConcMarkSweepGC \
-XX:MaxTenuringThreshold=10 \
-XX:+ExplicitGCInvokesConcurrent \
-XX:GCTimeRatio=19 \
-XX:+UseParNewGC \
-XX:+UseCMSCompactAtFullCollection \
-XX:CMSFullGCsBeforeCompaction=10 \
-XX:+CMSClassUnloadingEnabled \
-XX:+CMSParallelRemarkEnabled \
-XX:CMSInitiatingOccupancyFraction=50 \
-Xnoclassgc \
-XX:SoftRefLRUPolicyMSPerMB=0"

# 暴露8080端口
EXPOSE 8080

# 容器啟動時運行tomcat
CMD /usr/local/apache-tomcat-8.5.50/bin/catalina.sh run

注:環境變量【JAVA_OPTS】也可在容器啟動時指定:-e JAVA_OPTS='-server -Dfile.encoding=UTF-8 -Xms2g -Xmx2g -Xmn512m -Xss512K ..............'

 

三、制作鏡像

執行 docker build 制作鏡像:

docker build -t tomcat-8.5.50:v1 .

說明:

-t  設置tag名稱, 命名規則registry/image:tag(若不添加版本號,默認latest)

.  表示使用當前目錄下的Dockerfile文件(注意語句后面有一個點),如需指定目錄,則用 -f

執行 docker images 查看構建的鏡像:

 

 

四、啟動tomcat容器

# 掛載代碼
docker run -d --name mytomcat -v /server/webapps:/usr/local/tomcat/webapps/ -e TZ="Asia/Shanghai" --privileged=true -p 8080:8080 tomcat-8.5.50:v1

# 掛載日志
docker run -d -e TZ="Asia/Shanghai" --name masl -p 8081:8080 -v /home/mppay/logs/masl:/home/mppay/logs/masl 10.0.29.104:5000/masl:17

# 掛載配置文件catalina.sh(調整內存)
docker run -d --name masl -p 8081:8080 -e TZ="Asia/Shanghai" -v /usr/local/tomcat/bin/catalina.sh:/usr/local/apache-tomcat-8.5.50/bin/catalina.sh 10.0.29.104:5000/masl:sit-17

# 掛載配置文件server.xml(調整端口和線程數)
docker run -d --name masl -p 8081:8080 -e TZ="Asia/Shanghai" -v /usr/local/tomcat/conf/server.xml:/usr/local/apache-tomcat-8.5.50/conf/server.xml 10.0.29.104:5000/masl:sit-17

說明:

*  -d 后台運行

*  --name mytomcat 容器名稱
-v /server/webapps:/usr/local/tomcat/webapps/ 掛載當前項目的運行目錄到tomcat下的webapps
-e TZ="Asia/Shanghai" 設置時區
--privileged=true 設置擁有容器中的真正的root權限
-p 8080:8080 映射端口(宿主機port : 容器port)
*  tomcat-8.5.50:v1 鏡像的名稱

執行 docker ps 查看進程:

 

 

五、訪問驗證

輸入地址:http://ip:8080


免責聲明!

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



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