首页 > 其他分享 >使用Docker发布普通web项目(非springboot项目)

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

时间:2023-04-07 17:45:31浏览次数:58  
标签:web springboot tomcat local project usr webapps Docker my

公司的项目比较旧,还是普通的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"

打包发布

然后打包成镜像在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目录,然后映射到容器里面就可以了。

标签:web,springboot,tomcat,local,project,usr,webapps,Docker,my
From: https://www.cnblogs.com/lixin-link/p/17296939.html

相关文章

  • websocket教程
    提纲1、websocket协议概述包括基本功能,提出时间,标准文档2、websocket的协议包构成3、web前端对websocket的支持方案4、java后端的websocket技术方案参考资料:1、https://www.cnblogs.com/flydean/p/15341443.html#websocketserverhandshaker,主力参考资料,通过仔细阅读这篇文......
  • 基于SpringBoot实现单元测试的多种情境/方法(二)
    本文分享自天翼云开发者社区@《基于SpringBoot实现单元测试的多种情境/方法(二)》,  作者:才开始学技术的小白 1Mock基础回顾在上一篇分享中我们详细介绍了简单的、用mock来模拟接口测试环境的方法,具体的使用样例我们再回顾一下:1.首先是最简单的不需要传参的示例,需要注意的是,......
  • 7种实现web实时消息推送的方案
    做了一个小破站,现在要实现一个站内信web消息推送的功能,对,就是下图这个小红点,一个很常用的功能。不过他还没想好用什么方式做,这里我整理了一下几种方案,并简单做了实现。什么是消息推送(push)推送的场景比较多,比如有人关注我的公众号,这时我就会收到一条推送消息,以此来吸引我点击打开应......
  • docker-compose运行mysql 8.0.2
    docker-compose.yamlversion:'3.9'services:core:depends_on:mysql:condition:service_healthymysql:image:mysql:8.0.32container_name:mysql:8.0.32restart:alwayscommand:--default-authentication-plu......
  • Docker+Rancher + Harbor + GitLab + Jenkins 搭建CI/CD环境
    Docker+Rancher+Harbor+GitLab+Jenkins搭建CI/CD环境一.环境说明机器名称系统版本IP地址k8s版本docker版本k8s-rancher-205-10ubuntu22.04192.168.205.101.25.220.10.18k8s-master-205-11ubuntu22.04192.168.205.111.25.220.10.18k8s-worker01-205-12ubuntu22.04192.168.......
  • 基于FFmpeg和Wasm的Web端视频截帧方案
    作者|小萱导读基于实际业务需求,介绍了自定义Wasm截帧方案的实现原理和实现方案。解决传统的基于canvas的截帧方案所存在的问题,更高效灵活的实现截帧能力。全文10103字,预计阅读时间26分钟。01项目背景在视频编辑器里常见这样的功能,在用户上传完视频后抽取关键帧,提供给用户以便快......
  • 向运行中的docker容器添加挂载磁盘
    需求容器跑了一段时间,空间不足,需要扩容。传统方法需要commit成新的image然后重新run添加-v进行挂载容器使用了很长时间,数据较多打包不方便,希望热添加。实现以下命令在root权限下执行sudo-i#找到当前容器my_container的iddockercontainerinspectmy_container|grep"......
  • IIS 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler
    https://www.cnblogs.com/skylaugh/p/6376426.html我运行在iis中配置的那个网站后,报错:错误代码0x800700b7配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节 这个问题原因在于window7的IIS默认用的是ASP.NETv4.0应用程序池。解决方法:把这......
  • rabbitmq docker部署、集成学习笔记
    docker部署rabbitmq:image:rabbitmq:managementcontainer_name:myrabbitrestart:alwayshostname:rabbitmq_hostports:-15672:15672#webUI管理接口-5672:5672#生产者和消费者连接使用的接口volum......
  • JSON Web Token(JWT)
    JSONWebToken(JWT)什么是JWTJSONWebToken(JWT)是一种用于身份验证和授权的开放标准(RFC7519),它定义了一种紧凑、自包含的方式,用于在网络上传输信息。JWT由三部分组成,分别是头部(Header)、载荷(Payload)和签名(Signature)。头部(Header):Header部分通常由两部分信息组成:令牌的类型(这里......