使用Docker发布普通web项目(非springboot项目)

公司的项目比较旧,还是普通的web格式,只能打个war包放在tomcat中运行,现在要上docker发布,在此做下记录

DockerDesktop

开发机是win10,想要打包镜像需要安装DockerDesktop,安装前需要在bios里面开启虚拟化支持。

然后按照官方安装教程一步一步安装。

Dockerfile

然后在项目根目录编写dockerfile:

FROM tomcat:8.0.53-jre8 AS tomcat8
LABEL maintainer="myname"
# 删除tomcat中多余文件,否则会展示tomcat版本信息,不安全。
RUN rm -rf /usr/local/tomcat/webapps/ROOT/* && find /usr/local/tomcat/webapps -mindepth 1 -not -path '/usr/local/tomcat/webapps/ROOT/*' -not -name 'ROOT' -exec rm -rf {} +
WORKDIR /usr/local/tomcat/webapps
# 拷贝项目文件
COPY out/artifacts/my_project_war_exploded my_project
# 拷贝配置文件
WORKDIR /usr/local/tomcat/webapps/my_project/WEB-INF/classes
COPY docker/conf/dbconfig.properties dbconfig.properties
WORKDIR /usr/local/tomcat/webapps/my_project/WEB-INF/classes/com/power/config
COPY docker/conf/config.property config.property

# 拷贝tomcat配置参数文件
WORKDIR /usr/local/tomcat/bin
COPY docker/setenv.sh setenv.sh

WORKDIR /usr/local/tomcat/webapps

setenv.sh文件是tomcat配置文件,可以修改tomcat内存:

# -Xms初始化堆内存 -Xmx最大堆内存
JAVA_OPTS="-server -Xms4096m -Xmx8192m"

如果出现java中new Date()少8个小时很可能是因为tomcat的时区不对,需要在setenv.sh中添加如下设置:

# -Xms初始化堆内存 -Xmx最大堆内存 
JAVA_OPTS="-server -Xms4096m -Xmx8192m -Duser.timezone=GMT+08"

打包发布

然后打包成镜像在linux上面发布:

# 在Dockerfile所在目录执行build命令
docker build -t my_project:v0.1 .
# 导出镜像为文件
docker save -o my_project.tar my_project:v0.1

# 发布的linux机器上导入镜像文件
docker load -i my_project.tar
# 创建一个容器
docker run --name my_project --restart=always -d -p 80:8080 -v "/opt/images:/usr/local/tomcat/webapps/ROOT/images" -v "/usr/share/fonts/win:/usr/share/fonts/win" my_project:v0.1

第一个目录挂载是因为项目中的图片使用的不是图床,而是直接保存到本机了,需要吧目录挂在出来。
第二个目录挂载是因为aspose依赖在进行word转pdf时乱码,需要字体支持,因此吧windows中的C:\Windows\Fonts的所有字体拷贝到linux(centos)的/usr/share/fonts/win目录,然后映射到容器里面就可以了。

posted @ 2023-04-07 17:38  code-blog  阅读(119)  评论(0编辑  收藏  举报