部署Java项目
- 项目准备
- 准备Java项目
- 镜像准备
- 配置网络
 
- 部署项目
- 细节展示
项目准备
准备Java项目
hmall项目是一个maven聚合项目,使用IDEA打开hmall项目,查看项目结构如图:
 
我们要部署的就是其中的hm-service,其中的配置文件采用了多环境的方式:
 ![[Image]](https://img-blog.csdnimg.cn/direct/edad373c1e914dd8af0741546eb9c7f6.png)
其中的application-dev.yaml是部署到开发环境的配置,application-local.yaml是本地运行时的配置。
查看application.yaml,你会发现其中的JDBC地址并未写死,而是读取变量:
 ![[Image]](https://img-blog.csdnimg.cn/direct/014b09589dab4a188f7c32b1dbd6474f.png)
这两个变量在application-dev.yaml和application-local.yaml中并不相同:
 ![[Image]](https://img-blog.csdnimg.cn/direct/a6d8d1adc05845fdbe8f008069351742.png)
 一定要换成自己的配置虚拟机ip地址
在dev开发环境(也就是Docker部署时)采用了mysql作为地址,刚好是我们的mysql容器名,只要两者在一个网络,就一定能互相访问。
我们将项目打包:
 ![[Image]](https://img-blog.csdnimg.cn/direct/c63d2bd408d24949a29e7e69f8897370.png)
结果:
 ![[Image]](https://img-blog.csdnimg.cn/direct/3f8e05805193483a88c0b8b8f5fa59a8.png)
镜像准备
将hm-service目录下的Dockerfile和hm-service/target目录下的hm-service.jar一起上传到虚拟机的root目录:
 
配置网络
因为使用了MySQL,所以Java项目和MySQL要求同一个网络下
# 1.首先通过命令创建一个网络
docker network create shisan
# 2.然后查看网络
docker network ls
# 结果:
NETWORK ID     NAME      DRIVER    SCOPE
639bc44d0a87   bridge    bridge    local
403f16ec62a2   shiasn    bridge    local
0dc0f72a0fbb   host      host      local
cd8d3e8df47b   none      null      local
# 其中,除了shisan以外,其它都是默认的网络
将MySQL加入到自定义的网络中
docker network connect hmall mysql
输入
docker inspect mysql
查看到以及连接到shisan网络中
 
部署项目
# 1.构建项目镜像,不指定tag,则默认为latest
docker build -t hmall .
# 2.查看镜像
docker images
# 结果
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
hmall         latest    0bb07b2c34b9   43 seconds ago   362MB
docker-demo   1.0       49743484da68   24 hours ago     327MB
nginx         latest    605c77e624dd   16 months ago    141MB
mysql         latest    3218b38490ce   17 months ago    516MB
# 3.创建并运行容器,并通过--network将其加入hmall网络,这样才能通过容器名访问mysql
docker run -d --name hmall --network shisan-p 8080:8080 hmall
测试,通过浏览器访问:http://你的虚拟机地址:8080/search/list

细节展示
1.Dockerfile
 
 2.查看日志
 项目run后 ,可以通过
docker logs -f hmall
查看项目运行logs日志信息,此时已经是以运行中。
 



















