1、準備好Jdk和Tomcat
apache-tomcat-8.5.50.tar.gz jdk-8u212-linux-x64.tar.gz
注意:html
- Jdk 和 Tomcat 記得從官網下載,不然製做出來的鏡像容易出現不兼容問題。
jdk1.8下載:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmljava
tomcat8下載:https://tomcat.apache.org/download-80.cgilinux
- 準備修改好的 server.xml (修改鏈接和線程數),製做鏡像時覆蓋tomcat中的;
- apache-tomcat-8.5.50.tar.gz、jdk-8u212-linux-x64.tar.gz、Dockerfile放在同一目錄
2、編寫Dockerfile
內容以下:web
# 指定操做的鏡像 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
3、製做鏡像
執行 docker build 製做鏡像:apache
docker build -t tomcat-8.5.50:v1 .
說明:centos
-t 設置tag名稱, 命名規則registry/image:tag(若不添加版本號,默認latest)tomcat
. 表示使用當前目錄下的Dockerfile文件(注意語句後面有一個點),如需指定目錄,則用 -foracle
執行 docker images 查看構建的鏡像:app
4、啓動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 查看進程:
5、訪問驗證
輸入地址:http://ip:8080