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

news2024/12/22 16:21:27

文章目录

  • 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.coloradmin.cn/o/633010.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AAOS系列之音量设置

文章目录 前言UI 处理流程音量键的响应流程AudioService设置音量流程AAOS音量条选项总结 前言 AAOS音量设置内容可以分为几个部分 音量的ui响应流程legacy模式dynamic模式通过按键进行设置 AAOS 音量设置比通用的Android系统复杂,表现在两个方面。首先是UI响应上…

chatgpt赋能python:如何取出带有4的整数

如何取出带有4的整数 Python是一门功能强大的编程语言,可以轻松解决复杂的编程问题。在本文中,我们将介绍如何使用Python编程语言从一个整数列表中取出所有带有4的整数。我们将从介绍如何创建一个整数列表开始,然后编写Python代码以实现我们…

Unreal 5 实现丢弃武器功能

之前实现了物品的拾取功能,但是没有实现丢弃功能,这一篇讲一下我是如何实现丢弃功能的。 丢弃功能的逻辑是:拾取物品时,需要使用拾取的物品进行类的实现,所以,我们需要把数据存储到拾取的物品上&#xff0c…

4.DIY可视化-拖拽设计1天搞定主流小程序-后台设计幻灯

后台设计幻灯:本教程均在第一节中项目启动下操作 1.首页幻灯片php安装:phpthink安装: 2.数据库创建:幻灯片表:项目根目录下cmd :执行 : php think diygw:tableandapi oneHdp查看结果目录:访问url: http://one.com/one/api.hdp/list 3.界面增删…

【6.10 代随_53day】 最长公共子序列、不相交的线、最大子数组和

最长公共子序列、不相交的线、最大子数组和 最长公共子序列动态规划方法图解步骤代码 不相交的线动态规划方法 最大子数组和图解步骤代码 最长公共子序列 力扣连接:1143. 最长公共子序列(中等) 动态规划方法 确定递推公式 主要就是两大情况…

《横向联邦学习中 PCA差分隐私数据发布算法》论文算法原理笔记

论文地址:https://www.arocmag.com/article/01-2022-01-041.html 论文摘要 为了让不同组织在保护本地敏感数据和降维后发布数据隐私的前提下,联合使用 PCA进行降维和数据发布,提出横向联邦 PCA差分隐私数据发布算法。引入随机种子联合协商方…

九、进程程序替换

文章目录 一、进程程序替换(一)概念(二)为什么程序替换(三)程序替换的原理(四)如何进行程序替换1. execl2. 引入进程创建——子进程执行程序替换,会不会影响父进程呢? &…

016、元组(行)结构与dml操作

元组结构与dml操作 元组(行)结构行头信息Pageinspect工具DML操作InsertionDeletionUpdate块空间清理元组(行)结构 t_xmin保存插入此元组的事务的txid。这一行被哪个事务ID所修改t_xmax保存删除或更新此元组的事务的txid。如果此元组未被删除或更新,则t_xmax设置为0,这意味…

数据结构——堆(C语言实现)

文章目录 什么是堆堆的实现堆的结构定义堆的初始化接口堆的销毁接口堆的插入数据接口向上调整建堆接口判断堆是否为空堆的删除数据接口向下调整建堆接口获取堆顶数据获取堆的有效数据个数完整实现代码小结 堆排序堆排序的实现 关于建堆和堆排序时间复杂度的分析向下调整建堆向上…

STL之string

目录 string的基本实现一. string的基本架构二. 常用方法及实现1.初始化和清理a. 构造函数b. 析构函数c. swapd. 拷贝构造e. operator 2.成员访问a. operator[]b. sizec. c_str 3.迭代器iteratora. beginb. end 4.增删查改a. reserveb. resizec. insertd. push_backe. appendf.…

【连续介质力学】连续体运动学

简介 一个质点从t0出发,随着时间有不同的构形,运动的描述是运动学。 所以需要建立运动方程来表征连续体是如何演化及其性质(例如位移、速度、加速度、质量密度、温度等)如何随时间变化 初始构形 或者 参考构形: B …

Java反射与注解

文章目录 一、 注解1.简介2. 元注解3. 自定义注解 二、 反射1. 简介2. 理解Class类并获取Class实例3. 类的加载与初始化4. 类加载器ClassLoader5. 获取运行时类的完整结构6. 动态创建对象执行方法7. 反射操作泛型8. 反射操作注解 一、 注解 1.简介 Annotation是JDK5.0开始引入…

day52|动态规划13-子序列问题

子序列系列问题 300.最长递增子序列 什么是递增子序列: 元素之间可以不连续,但是需要保证他们所在位置是元素在数组中的原始位置。 dp数组dp[i]表示以nums[i]为结尾的最长递增子序列的长度。递归函数:dp[i] max(dp[j]1,dp[j])初始化条件&…

Linux常用命令——gpm命令

在线Linux命令查询工具 gpm 提供文字模式下的滑鼠事件处理 补充说明 gpm命令是Linux的虚拟控制台下的鼠标服务器,用于在虚拟控制台下实现鼠标复制和粘贴文本的功能。 语法 gpm(选项)选项 -a:设置加速值; -b:设置波特率&…

chatgpt赋能python:Python中如何取出字符串中的数字并赋予新的变量

Python 中如何取出字符串中的数字并赋予新的变量 在 Python 中,我们经常需要处理字符串,其中可能包含多种类型的数据。当我们需要获取字符串中的数字时,该怎样做呢?本文将介绍取出字符串中的数字的方法,并赋予新的变量…

chatgpt赋能python:Python利器之数字提取

Python 利器之数字提取 Python 是一门强大的编程语言,被广泛应用在数据分析、人工智能等领域。在很多数据分析的场景下,需要从文本中提取数字,本文将介绍如何使用 Python 快速提取文本中的所有数字。 使用正则表达式提取数字 正则表达式&a…

YOLOv7 模型融合

将两种训练模型的检测结果融合 首先需要两种模型,一个是yolov7原有的模型,另一个是你训练出来的模型 其中yolov7.pt是官方提供的模型,有80个类别 其中yolov7_3.7HRW.pt是我们自己训练的模型,有三个分类,举手、看书、写…

WPF开发txt阅读器6:用树形图管理书籍

txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录字体控件绑定书籍管理系统 TreeView控件 TreeView可以通过可折叠的节点来显示层次结构中的信息,是表达文件系统从属关系的不二选择,其最终效果如下 为了构建这个树…

UnityVR--组件6--Animation动画

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

【Python可视化大屏】「淄博烧烤」热评舆情分析大屏

文章目录 一、开发背景二、爬虫代码2.1 展示爬取结果2.3 导入MySQL数据库 三、可视化代码3.1 大标题3.2 词云图(含:加载停用词)3.3 玫瑰图(含:snownlp情感分析)3.4 柱形图-TOP10关键词3.5 折线图-讨论热度趋…