Docker部署前后端分离项目

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉
🍎个人主页:Leo的博客
💞当前专栏: 开发环境篇
✨特色专栏: MySQL学习
🥭本文内容:Docker部署前后端分离项目
📚个人知识库: Leo知识库,欢迎大家访问

目录

    • 1. 安装Docker
      • 1. 1 卸载旧版Docker
      • 1.2 配置yum仓库
      • 1.3 安装Docker
      • 1.4 添加自启动配置
      • 1.5 配置阿里云镜像加速
      • 1.6 测试
    • 2. 安装Nginx
      • 2.1 拉取镜像
      • 2.2 安装Nginx
      • 2.3 测试
    • 3. 安装MySQL
      • 3.1 拉取镜像
      • 3.2 安装MySQL
      • 3.3 连接MySQL
    • 4. 部署SpringBoot项目
      • 4.1 Maven打包
      • 4.2 编写Dockefile
      • 4.3 将文件上传至Linux服务器
      • 4.4 构建镜像
      • 4.5 运行容器
    • 5. 部署Vue前端项目
      • 5.1 打包
      • 5.2 编写Dockefile
      • 5.3 构建镜像
      • 5.4 构建容器

1. 安装Docker

1. 1 卸载旧版Docker

首先如果系统中已经存在旧的Docker,则先卸载:

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

1.2 配置yum仓库

笔者服务器是 centos 7 环境

如果CentOS系统内核低于3.10,可以升级软件包及内核,通过 yum update 升级。

Linux系统分为两种:

  1. RedHat系列:Redhat、Centos、Fedora等
  2. Debian系列:Debian、Ubuntu等

RedHat系列的包管理工具是yum

Debian系列的包管理工具是apt-get

首先需要安装一个yum工具

yum install -y yum-utils

安装Docker的强依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

安装成功之后,执行命令,配置Docker的yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.3 安装Docker

yum install docker-ce docker-ce-cli containerd.io -y 

1.4 添加自启动配置

因为我们是本地虚拟机,不能像云服务器一样无时无刻在运行,所以我们需要配置一下,让他开机自启,省得我们每次打开虚拟机都要打开docker。

# 启动Docker
systemctl start docker# 停止Docker
systemctl stop docker# 重启
systemctl restart docker# 设置开机自启
systemctl enable docker# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

1.5 配置阿里云镜像加速

页面向下滚动,即可找到配置的文档说明:

选择自己Linux对应的版本即可

直接粘贴到命令行即可。

1.6 测试

输入命令测试docker是否安装完毕

docker--version

到这里,我们Docker就已经成功安装完。

2. 安装Nginx

2.1 拉取镜像

首先我们需要去拉取镜像。执行以下命令进行镜像拉取。

docker pull nginx

然后通过以下命令查看我们拉取的镜像

docker images

注意我这里使用的是我写的模版命令 : dis

如果还太了解原理的同学,可以参考我这篇文章open in new window,进行配置。

2.2 安装Nginx

通过以下命令进行安装

docker run -d --name nginx -p 80:80 nginx

2.3 测试

然后我们通过我们的IP+端口号访问我们的nginx服务。

浏览器打开http://192.168.186.101:80open in new window ,进行访问,这里80是可以省略的,默认访问的就是80端口。

image-20240410210822140

可以看到,我们Nginx的默认欢迎页,大功告成!

3. 安装MySQL

3.1 拉取镜像

我们利用Docker来安装一个MySQL软件,大家可以对比一下之前传统的安装方式,看看哪个效率更高一些。

如果是利用传统方式部署MySQL,大概的步骤有:

  • 搜索并下载MySQL安装包
  • 上传至Linux环境
  • 编译和配置环境
  • 安装

而使用Docker安装,仅仅需要两步即可,在命令行输入下面的命令:

首先我们需要去拉取镜像。执行以下命令进行镜像拉取。

docker pull mysql

3.2 安装MySQL

通过以下命令进行安装。

docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=root \mysql

通过以下命令启动容器并查看我们的容器是否运行成功

# 启动容器
docker start mysql#查看正在运行的容器
docker ps

image-20240410210114029

可以看出来我们MySQL已经成功运行在Docker上面,大功告成!!!

3.3 连接MySQL

下面我们通过数据库管理软件进行测试连接。这里笔者使用的是Navicat 16。如何有需要的读者朋友,可以关注微信公众号程序员Leo,后台回复Navicat即可获取。

我们打开我们的Navicat,点击连接。

image-20240410210448488

然后填好服务器基本信息之后,点击测试连接。

image-20240410210514845

然后发现我们的数据库,可以看到初始的四个数据库,说明本次安装成功!

image-20240410210540673

大功告成!!!

4. 部署SpringBoot项目

4.1 Maven打包

image-20240410213006748

4.2 编写Dockefile

FROM openjdk:11  # 指定了基础镜像,即在创建新镜像时将从openjdk:11这个镜像开始。COPY *.jar /app.jar # 重命名jar包为app.jarCMD ["--server.port=8989"] # 指定端口号命令EXPOSE 8989 #docker对外暴露 8989端口ENTRYPOINT ["java","-jar","/app.jar"] # 设置了容器启动时执行的默认命令。当容器启动时,它会执行java -jar /app.jar命令来启动Java应用程序。

4.3 将文件上传至Linux服务器

这里创建两个目录,springboot目录主要放后端项目的一些jar包,dockerfile等文件,vue目录主要放dist打包目录。

mkdir springboot
mkdir vue

将文件上传到 Linux 服务器上面,必须放在同级目录一起!

image-20240410213859737

4.4 构建镜像

通过以下命令进行构建镜像。

docker build -t blog-springboot .  #点千万别漏了,这里取名镜像为api,可以随便取名!

image-20240410214253516

4.5 运行容器

查看当前镜像

docker images

image-20240410214436281

开始构建容器。

docker run -d -p 8989:8989 --name blog-springboot blog-springboot

查看容器

docker ps

image-20240410214550931

5. 部署Vue前端项目

5.1 打包

通过前端脚本进行打包。

image-20240410214721320

然后将dist目录上传到服务器目录vue目录中。

5.2 编写Dockefile

FROM nginx:latestCOPY dist/ /usr/share/nginx/html/
EXPOSE 3001

5.3 构建镜像

docker build -t blog-vue .

image-20240410215043258

查看镜像

docker images

image-20240410215126772

5.4 构建容器

docker run -d -p 3001:80 --name blog-vue blog-vue

查看运行的容器

docker images

image-20240410215550220

然后打开浏览器通过ip + 端口进行访问

笔者这里是 :http://192.168.186.101:3001/

可以看到这里已经成功部署了。

image-20240410215636380

这里也可以通过命令来查看实时日志情况。

docker logs -f 容器名

image-20240410215758686

好了,今天的分享到此为止,我们学会了如果从零开始部署一个SpirngBoot + Vue的前后端分离项目。如果这篇文章对你有帮助,欢迎您给Leo一个赞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/303929.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity类银河恶魔城学习记录12-7-2 p129 Craft UI - part 2源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI_CraftWindow.cs using UnityEngine.UI; using TMPro; using UnityEngin…

CentOS7.9创建本地yum源操作步骤报错解决方法

1.基础信息 CentOS7.9-mini最小化安装的系统,在离线安装rpm时候需要大量依赖,需要花费大量时间去查找依赖包。受于环境限制无法接入互联网使用公开yum源,于是便有了搭建本机yum源的想法,在网上下载CentOS7.9标准版“CentOS-7-x86_…

windows 系统下 mysql 数据库的下载与安装(包括升级安装)

windows 系统下 mysql 数据库的下载与安装(包括升级安装) 一、mysql 介绍: MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。 MySQL 是最流行的关系型数据库管理系统之一&#xf…

pyqt5 QScrollArea组件

本示例中,演示了QScrollArea的使用,以及QScrollBar的样式设定,在代码中使用setStyleSheet设置样式,记得要优先设置scrollArea,再设置窗口的样式,不然QScrollBar的样式会不起作用,使用QSS设置没有…

hadoop103: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

分析: 在启动hadoop服务的时候,遇到了这个问题: hadoop103: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 这个一看就是,密钥问题 于是ssh 主机名就行测试 需要输入密码,就说明这里有问…

A Note on LoRA

A Note on LoRA 摘要Additional InsightsPractical ImprovementsLooking Ahead 摘要 LoRA已成为一种首选的方法,用以高效地适应大型语言模型(LLM),其简便性和有效性令人瞩目。本文档扩展了原始LoRA论文,提供了最初未讨…

MySQL进阶之(七)EXPLAIN 详解

七、EXPLAIN 详解 7.1 查询性能那些事7.1.1 查看系统性能参数7.1.2 统计 SQL 的查询成本7.1.3 定位执行慢的 SQL:慢查询日志01、开启慢查询日志参数02、关闭慢查询日志03、删除慢查询日志 7.1.4 查看 SQL 执行成本:SHOW PROFILE 7.2 EXPLAIN 语句输出中各…

java程序 .exe启动nginx防止重复启动,已解决

java代码生成好的.exe启动nginx服务程序 根据nginx占用端口来解决nginx服务重复启动问题(下面代码了解代码逻辑后根据自己的业务需求修改即可) 代码: package org.example;import javax.swing.*; import java.awt.*; import java.io.*; …

蓝桥杯——16

学习视频&#xff1a;17-深搜的剪枝策略视频讲解_哔哩哔哩_bilibili #include<iostream> #include<cstring> using namespace std; int n, m; string maze[110]; bool vis[110][110]; int dir[4][2] { {0,1},{0,-1},{1,0},{-1,0} }; int ans 100000; bool in(in…

利用Python ARM网关仓储物流AGV小车控制器

在现代智慧物流体系中&#xff0c;高效的信息管理系统是物流中心实现精准跟踪货物、科学管理库存及优化配送路线的关键环节。通过采用ARM架构的工控机或网关&#xff0c;并结合Python的二次开发能力&#xff0c;可以有效集成并强化物流管理系统的数据处理与通信功能&#xff0c…

基于springboot+vue实现的的成人教育教务系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

2024年河北省职业院校技能大赛高职组“信息安全管理与评估”赛项样题

培训、环境、资料、考证 公众号&#xff1a;Geek极安云科 网络安全群&#xff1a;775454947 网络系统管理群&#xff1a;223627079 网络建设与运维群&#xff1a;870959784 极安云科专注于技能提升&#xff0c;赋能 2024年广东省高校的技能提升&#xff0c;受赋能的客户院校均…

jvm中jdk常用的几个命令总结

1.jmap 此命令可以用来查询内存信息&#xff0c;实例个数及占用内存大小 1.1 查看堆内存概要信息&#xff08;内存分配统计&#xff09; jmap -histo[:live] <pid> .-histo&#xff1a;显示堆中对象的统计信息&#xff0c;包括每个类的实例数量、占用内存大小等 :live…

Redis高级-分布式缓存RDB原理

分布式缓存 1.1.2.RDB原理 bgsave开始时会fork主进程得到子进程&#xff0c;子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB 文件。 fork采用的是copy-on-write技术&#xff1a; 当主进程执行读操作时&#xff0c;访问共享内存&#xff1b;当主进程执行写操…

MT3022 召唤神龙

思路&#xff1a;二分答案 。check():检查组p套卡是否成立&#xff0c;即检查r卡是否足够组成p套卡。 &#xff08;易错点&#xff1a;check的思路&#xff0c;开long long&#xff09; #include <bits/stdc.h> using namespace std; long long int n, m; long long int…

ht1622不显示无反应问题解决

如果你正在写ht1622 驱动时&#xff0c;怎么看程序都没问题&#xff0c;抓取波形&#xff0c;示波器分析波形&#xff0c;如果都没有问题&#xff0c;那么很大可能是硬件问题&#xff0c;检测看看 ht1622 RD是不是接地了。 RD 低会进入读取模式&#xff0c;所以不用RD 请将RD悬…

Docker篇(二)— Docker架构介绍

目录 一、Docker和虚拟机的区别二、Docker架构镜像和容器DockerHubDocker架构 小结 一、Docker和虚拟机的区别 Docker可以让一个应用在任何操作系统中非常方便的运行。而以前我们接触的虚拟机&#xff0c;也能在一个操作系统中&#xff0c;运行另外一个操作系统&#xff0c;保…

IntelliJ IDEA 2024 for Mac/Win:引领Java开发新纪元的高效集成环境

在日新月异的软件开发领域&#xff0c;一款高效、智能的集成开发环境&#xff08;IDE&#xff09;无疑是程序员们不可或缺的神兵利器。今天&#xff0c;我要为大家介绍的&#xff0c;正是这样一款集大成之作——IntelliJ IDEA 2024。无论是Mac用户还是Windows用户&#xff0c;只…

在vite中限制node版本

1.修改package.json文件 {"name": "wine-store-frontend","version": "0.0.0","private": true,"type": "module","scripts": {"dev": "vite --open","build"…

宁盾身份域管与升腾云桌面完成兼容互认证,支持国产云桌面统一身份认证与管理

近日&#xff0c;宁盾国产化身份域管与升腾云桌面系统完成兼容互认证明。经过宁盾与升腾共同测试&#xff0c;身份域管与升腾云桌面系统 V7 完全兼容&#xff0c;其功能、性能和兼容性等各方面表现良好&#xff0c;运行稳定、安全&#xff0c;可以满足用户的需求。这是宁盾国产…