文章目录
本地项目打成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;
效果如下:
可以了,应该可以访问了。
应该可以访问了吧,具体问题再具体分析吧。