安装部署JavaWeb项目需要的容器
一、 安装部署MySQL
#1、搜索mysql镜像
docker search mysql
#2、拉取mysql镜像(可自行选择版本)
docker pull mysql:5.7
#3、创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
#执行创建容器命令
docker run -id \
-p 3306:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
参数说明:
- -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
- -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
- -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
- -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
- -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
容器创建完成后如图
2)启动容器(刚创建完是默认启动的,这步可跳过)
查看所有容器可知容器已启动
3)进入mysql容器
4)使用之前创建时设置的密码登录(MYSQL_ROOT_PASSWORD=123456),如果能登录则安装成功,如果失败请删除容器重复之前步骤
5)使用外部机器Navicat连接测试
二、安装部署Tomcat(大致同上)
#1、搜索tomcat镜像
docker search tomcat
#2、拉取tomcat镜像(可自行选择版本)
docker pull tomcat:9.0.34
#3、创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
#执行创建容器命令
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat:9.0.34
参数说明:
- -p 8080:8080:将容器的8080端口映射到主机的8080端口
-v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps
补充:
1)安装Tomcat时会自动安装他运行所需要的依赖,如java运行环境JDK。
2)如果项目需要Nginx、redis也可按照以上方式进行安装
三、将项目部署到Tomcat运行
1)把打包后的Java web项目Export–>war文件部署到tomcat容器内部的webapps里面。
我们之前已经将宿主机下的/root/tomcat目录挂载到容器中的 /usr/local/tomcat/webapps ,宿主机下的/root/tomcat就是数据卷目录,当容器目录和数据卷目录绑定后,对方的修改会立即同步。
简单的说,当前宿主机的/root/tomcat就是webapps目录。
所以我们只需要将我们项目打好的war包放到/root/tomcat目录就可以了。
2)最重要的一点,Tomcat与mysql是两个容器,tomcat中的项目运行需要数据库的数据,两个容器怎么互相访问呢?
1、输入命令docker inspect 容器名
2、在详情中找到红框部分,复制ip,这就是我们项目访问mysql的host
3、修改项目连接数据库的配置文件
4、修改完成后,重启docker,命令:systemctl restart docker
然后启动mysql容器 命令:docker start c_mysql
tomcat容器 命令:docker start c_tomcat
查看容器是否已经启动 命令:docker ps -a
如图则容器已经启动,可以访问我们的项目了
5、访问项目,在外部机器浏览器URL中输入
http://Linux主机IP:Tomcat端口号/项目名称/
http://192.168.0.105:8080/MyWebsite_HuaXin/
如图,我已经访问成功进入项目
6、测试项目能否连接MySQL数据库
数据库有两个用户
发送登录请求返回状态码200说明连接MySQL没有问题
至此,项目部署完成!