【Docker】docker部署前Springboot-vue后端分离项目【实战篇】

news/2024/10/23 11:28:57/

文章目录

  • 1、docker 安装jdk
  • 2、docker 安装mysql
    • 通过Docker命令进入Mysql容器内部
    • 初始化数据
    • sqlDbx连接查看
  • 3、docker build构建后端镜像
    • 修改配置数据库JDBC链接IP为虚拟机服务器IP
    • maven clean package打包后端jar并上传到服务器
    • 编写Dockfile
    • build 构建
    • 查看构建的后端镜像app
  • 4、docker run运行后端镜像
    • 查看运行容器app日志
      • java.net.NoRouteToHostException: No route to host (Host unreachable) --如果出现需要开启防火墙端口3306
    • 虚拟服务器防火墙增加端口3306
    • 验证后台是否链接mysql成功
    • 再次查看容器日志mysql成功
  • 5、docker 安装nginx

在这里插入图片描述

1、docker 安装jdk

https://jackwei.blog.csdn.net/article/details/110227719

docker search openjdk:8
docker pull openjdk:8
docker run -di --name=jdk1.8 openjdk:8
docker exec -it jdk1.8 /bin/bash
root@2365c0f5b0ce:/# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
root@2365c0f5b0ce:/#

2、docker 安装mysql

docker pull mysql:5.7

在这里插入图片描述

docker run \
--name mysql \
-d \
-p 3306:3306 \
--restart unless-stopped \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

在这里插入图片描述

通过Docker命令进入Mysql容器内部

docker exec -it mysql /bin/bash
## 或者
docker exec -it mysql bash

初始化数据

# 1.拷贝SQL文件到mysql容器中
docker cp /root/app/springboot-vue.sql mysql:/springboot-vue.sql# 2. 创建数据库
docker exec -it mysql mysql -uroot -p123456  # 3.登陆控制台执行source 命令
mysql> source springboot-vue.sql

在这里插入图片描述

sqlDbx连接查看

在这里插入图片描述
在这里插入图片描述

3、docker build构建后端镜像

修改配置数据库JDBC链接IP为虚拟机服务器IP

在这里插入图片描述
在这里插入图片描述

maven clean package打包后端jar并上传到服务器

在这里插入图片描述

编写Dockfile

FROM openjdk:8
ENV APP_PATH=/root/app
WORKDIR $APP_PATH
ADD ./springboot-0.0.1-SNAPSHOT.jar /$APP_PATH/apps.jar
EXPOSE 9090
ENTRYPOINT ["java","-jar"]
CMD ["apps.jar"]

或者

FROM openjdk:8
ENV APP_PATH=/home/app
WORKDIR $APP_PATH
ADD ./springboot-0.0.1-SNAPSHOT.jar /$APP_PATH/apps.jar
EXPOSE 9090
ENTRYPOINT ["java","-jar","/home/app/apps.jar"]

build 构建

docker build -t app:0.1 .

在这里插入图片描述

查看构建的后端镜像app

在这里插入图片描述

4、docker run运行后端镜像

docker run --name app -p 9090:9090 --restart=always -d app:0.1

--restart=always参数能够使我们在重启docker时,自动启动相关容器。 Docker容器的重启策略如下:
no,默认策略,在容器退出时不重启容器 on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

在这里插入图片描述

查看运行容器app日志

docker  logs -f app

java.net.NoRouteToHostException: No route to host (Host unreachable) --如果出现需要开启防火墙端口3306

在这里插入图片描述

虚拟服务器防火墙增加端口3306

   查看防火墙状态命令         systemctl status firewalld重启防火墙命令            systemctl reload firewalld关闭防火墙命令            systemctl stop firewalld
查看数据库服务器已开放端口
firewall-cmd --list-ports
开放3406端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙命令            
systemctl reload firewalld
再次查看数据库服务器已开放端口
firewall-cmd --list-ports

在这里插入图片描述

验证后台是否链接mysql成功

curl -X GET http://localhost:9090/user?pageNum=1&pageSize=10&search=

在这里插入图片描述

再次查看容器日志mysql成功

docker  logs -f app

在这里插入图片描述

5、docker 安装nginx


http://www.ppmy.cn/news/323915.html

相关文章

5.DIY可视化-拖拽设计1天搞定主流小程序-公告管理

1.DIY可视化-拖拽设计1天搞定主流小程序-公告管理 公告管理-本教程均在第一节中项目启动下操作 1.DIY可视化-拖拽设计1天搞定主流小程序-公告管理2.创建数据表执行: php think diygw:tableandapi oneHdp 3. 复制幻灯片界面进行编辑4.修改后台API5.富文本添加6.验证 :访问url : …

UnityVR--组件6--Animation动画

目录 新建动画Animation Animation组件解释 应用举例1:制作动画片段 应用举例2:添加动画事件 Animator动画控制器 应用举例3:在Animator中设置动画片段间的跳转 本篇使用的API:Animation、Animator以及Animator类中的SetFlo…

Flutter调用Rust代码操作指南

在之前的利用Rust与Flutter开发一款小工具文章中,我们使用Rust代码实现了一个简单的WebSocket发送功能。也在Rust库交叉编译以及在Android与iOS使用这篇中介绍了Rust库的打包以及双端的使用。 今天我们继续用之前WebSocket的代码举例,来介绍如何在Flutt…

荣耀游戏本散热实测分享 这是你的理想散热本

双11预期而至,今天是荣耀游戏本新一轮优惠预售的最后一天,考虑到很多小伙伴如今仍然不知道要入手什么游戏本,为此笔者特意进行了一次荣耀游戏本散热实测分享给大家,让大家可以更好地了解这款游戏本的散热优势,抓住优惠…

更薄的游戏本会吸引你吗? — 荣耀猎人评测

荣耀猎人昨天开卖的成绩不错,我们也终于完成了详细评测,下一波的抢购会在 10.2 日开启,其实在这个买什么都缺货的年代,只要有货就是赢了,它对得起现在的价格,希望大家都能买到自己想要的产品。 设计与体验 …

小米Redmi G游戏本怎么样

Redmi G游戏本正式发布了,作为redmi 的首款游戏本,redmi G采用了全新的设计,不同于之前redmi发布的轻薄本。这次游戏本更加具有个性,极具科幻的正脸,搭配游戏专属键盘,配合微米级3D精雕纹理工艺&#xff0c…

比 AMD 更便宜的 intel — Redmi G 游戏本详细测评

这就是 Redmi 旗下的首款笔记本,名字很好记:Redmi G. 我猜 G 也就是 Game 的意思吧,发布会结束公布价格之后,我的第一反应就是,终于有厂商把 intel 产品的售价拉下来了。 还是老样子,Redmi G 的设计和体验如何,性能以及散热的表现又怎么样?这里就是 MDT 对它进行的完整…

linux开发员用游戏本吗,游戏本算什么?老子能开发游戏

游戏本算什么?老子能开发游戏 2020-07-16 10:33:11 8点赞 6收藏 8评论 前言 相信大部分人对设计师本的理解还认为是一台拥有高素质屏幕和主流级处理器搭载可以支持视频硬件加速编码的主流级显卡的厚重笔记本产品。但是对于真正需要高性能的设计师们这种设计师本就有…