Dockerfile
FROM tomcat:8.5.46-jdk8-openjdk-slim
COPY ecs-console.war /usr/local/tomcat/webapps/
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS -server -Xmx4736M -Xms4736M -Xmn1728M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
EXPOSE 8080
CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
基礎的部分就不說了,這里只指明需要注意的地方
- 選取8.5.46-jdk8-openjdk-slim作為基鏡像,減小鏡像的大小
- 設置環境變量JAVA_OPTS,控制jvm的內存大小,不然jdk8默認情況下jvm會根據宿主機的內存分配自己的內存.據說jdk10以后會根據容器的大小分配內存
- CMD ["/usr/local/tomcat/bin/catalina.sh","run"],直接運行tomcat的catalina.sh腳本,曾經嘗試過在這里運行startup.sh,
但是那個腳本執行完畢后會自動進入后台模式,而docker容器必須有前台運行的應用,否則容器會直接掛掉,所以采用這種方式。
- 采用COPY命令加入war包,因為tomcat運行時會自動解壓,而Docker的ADD命令的效率低於COPY,所以使用COPY命令