700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 记录centos下 利用docker复制tomcat镜像部署springboot项目(war包带mysql数据库)的步骤--详细

记录centos下 利用docker复制tomcat镜像部署springboot项目(war包带mysql数据库)的步骤--详细

时间:2022-09-03 04:44:17

相关推荐

记录centos下 利用docker复制tomcat镜像部署springboot项目(war包带mysql数据库)的步骤--详细

文章目录

本地项目打成war包修改打包方式为war关闭springboot内置tomcat增加启动类在当前项目的文件夹位置打开cmd上传服务器,前期准备准备tomcat复制tomcat镜像前期准备创建只用于shirostudy项目的tomcat镜像创建容器进入容器内部,调整!可以尝试访问一下访问tomcat访问项目如果访问项目失败了去除war包名,改为以根路径来访问学习docker容器内外cp文件容器内下载vim,操作文本更改完server.xml记得重启如果更改容器内文件退出容器后重启,启动容器失败了利用docker弄数据库docker下创建数据库在本地连接云端数据库,并导入本地写好的数据回服务器,查看数据库表是否建好可以了,应该可以访问了。

本次步骤,我的项目名shirostudy

本地项目打成war包

修改打包方式为war

关闭springboot内置tomcat

在pom文件中添加以下的依赖,重点是scope

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency>

增加启动类

在你的application启动类同级目录下,增加一个用于解析war包下的web.xml的类

package by.start.shirostudy;import org.springframework.boot.builder.SpringApplicationBuilder;import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;/*** @author bystart* @date /7/17 9:26* 仔细!坚持!* ❥(^_-))*/public class ServletInitializer extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(ShirostudyApplication.class);}}

在当前项目的文件夹位置打开cmd

前提:配置好maven环境

执行以下命令,则会在当前文件夹下打包生成一个target文件夹,war包就在里面了

mvn clean package -Dmaven.test.skip=true

上传服务器,前期准备

准备tomcat

直接随便哪里开始安装tomcat镜像

docker pull tomcat # 直接拉取最新的docker pull tomcat:8.5.53 # 拉取指定版本的

查看镜像

docker images# latest即表示最新

复制tomcat镜像前期准备

在目录下随便创建一个目录,用来存放生成镜像的Dockerfile文件(该方法可以直接将war包,放入容器当中)

如图

进入文件夹,上传war包,并新建Dockerfile文件

FROM tomcatMAINTAINER LHY COPY shirostudy.war /usr/local/tomcat/webapps/# FROM 根据tomcat镜像来复制镜像# MAINTAINER 镜像拥有者名称,随便写# COPY 将当前目录下的war包,复制到容器内的webapps下。 后面这个路径是tomcat容器内部路径

创建只用于shirostudy项目的tomcat镜像

于上述当前目录下执行下列命令

docker build -t 镜像名(自己取):latest (写上最新版本) . #(别忘记最后有一个. 表示从当前目录下找Dockerfile创建镜像)

执行成功效果图,出现Successfully则表示成功了

查看镜像,效果如下

创建容器

执行下述命令,创建容器

docker run -d -p 8084:8080 --name byshiro shirostudy# docker run -d -p 对外端口:本地端口 --name 容器名字 基于镜像名字或者ID

查看效果

进入容器内部,调整!

执行命令

docker exec -it byshiro /bin/bash

查看效果

发现有这两个目录,cd进去看看,你会发现我们刚刚copy过来的war包在webapps下面,而真正webapps下面该有的一些工具都在webapps.dist下面,所以我们将webapps下的东西复制到webapps.dist下面,并删除webapps,将webapps.dist更名为webapps

Tip: tomcat会自动对webapps下面的war包进行解压。

上述操作命令如下

mv webapps/* webapps.dist/rm -rvf webappsmv webapps.dist webapps

执行完之后效果如下

可以尝试访问一下

访问tomcat

ip:8084# 应该是可以出现tomcat首页的,确定tomcat是对的

访问项目

ip:8084/shirostudy# 后面那个是war包名

如果访问项目失败了

1.可能代码错了

2.可能你的项目里面的其它端口,类似redis,dubbo,mysql 用的有问题

其它:进入shirostudy容器内部

docker exec -it byshiro /bin/bashcd logs cat log名字# 打印查看错误日志信息

效果如下

去除war包名,改为以根路径来访问

去除war包名的一种方式,是更改tomcat的conf目录下的server.xml文件,对其作出如下图片的更改

在Engine下的Host标签下面加入这一段。(怎么加进去,继续往下看,2种方式)

<Context path="" docBase="shirostudy" reloadable="true" /># path="" 则无额外访问路径,以端口即可访问# docBase 则是把我们刚刚的war包名的访问方式,弄成了path

没错,你会发现在容器内部,无法直接使用vi和vim命令对文件进行直接操作,建议先去看下面的这段:如果更改容器内文件退出容器后重启,启动容器失败了

学习docker容器内外cp文件

0、退出容器

exit

1、从容器里面拷文件到宿主机(即的服务器本身)

docker cp byshiro:/usr/local/tomcat/conf/server.xml /#这一种方式,将server.xml文件拷贝到宿主机下,利用vim命令进行操作好,再放回去# 我这里是直接放在根目录下了

2、从宿主机拷文件到容器里面

docker cp /server.xml byshiro:/usr/local/tomcat/conf/# 将根目录下的server.xml放进容器里,会自动覆盖

容器内下载vim,操作文本

在容器内执行下述两条命令

apt-get updateapt-get install vim

等待一段时间,就可以使用vim了。

但是吧,每一个容器都得这么来一下,太麻烦了吧!0.0

更改完server.xml记得重启

在容器内的bin目录下执行下述命令

./startup.sh

exit退出容器后,执行下述命令

docker restart byshiro#重启容器docker ps -a# 观察容器是否启动

如果更改容器内文件退出容器后重启,启动容器失败了

先执行下述代码,打印容器日志

docker logs byshiro# 注意是什么错了

但是!!!

容器运行不起来的情况下是进不去容器的,是不是很难受,知道哪个文件错了却没办法进去修改。

所以,可以把之前的修改的文件copy到宿主机上来修改,错了再改,再放进去就行了。无关容器是否启动。不然就只能推到重来了吧!

利用docker弄数据库

docker下创建数据库

拉取镜像方式差不多的,粘命令了

docker pull mysql:5.7docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 # 启动mysql ,这里设置的密码是123456,建议和你项目中写的一样

注意你的项目中的mysql的密码和服务器的密码是否一致

效果如下:

进入mysql容器

docker exec -it mysql /bin/bash # 进入mysql容器# 进入mysqlmysql -u root -p #输入密码123456

创建与你项目中写的一样的数据库名称

show databases;create database 数据库名show databases;

效果如下

在本地连接云端数据库,并导入本地写好的数据

将你之前项目使用的数据库导出为sql文件后

使用navicat

如图操作

右键你创建的数据库,运行sql文件

回服务器,查看数据库表是否建好

进入mysql容器中,如上

执行下述命令

use 数据库名show tables;

效果如下:

可以了,应该可以访问了。

应该可以访问了吧,具体问题再具体分析吧。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。