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把war包打成镜像的两种方式_第1张图片

打包完成
docker把war包打成镜像的两种方式_第2张图片
启动:
在这里插入图片描述
docker run -d -p 8080:8080 --name 应用名 镜像id
-d后台启动
-p暴露端口,容器内部端口暴露带虚拟机的端口
–name指定应用名

访问:
docker把war包打成镜像的两种方式_第3张图片

你可能感兴趣的:(docker,springboot,java)