无缝集结:一键式部署前后端分离项目,快速构建强大的容器化应用

news2024/9/22 9:57:50

一键式部署前后端分离项目,快速构建强大的容器化应用

文章目录

  • 一键式部署前后端分离项目,快速构建强大的容器化应用
    • 关于作者
      • 1.搜索nginx镜像
      • 2.拉取nginx镜像
      • 3.运行镜像
      • 4.在`/home/` 目录下新建目录 `nginx`
      • 5.拷贝nginx配置文件到主机目录,为文件映射做准备(直接映射会出错)
      • 6.停止运行容器并删除容器
      • 7.重新启动容器(映射相应的目录文件)
      • 8.发布Vue项目
        • buil打包后vue pathRewrite不生效
      • 9.配置nginx
    • 防火墙命令
  • doker安装数据库
      • 1. 拉取Mysql镜像版本
      • 2. 启动Mysql镜像
      • 3. 配置Mysql远程链接
  • 后端生成DockerFile打包镜像

关于作者

  • 作者介绍

🍓 博客主页:作者主页

🍓 简介:JAVA领域优质创作者🥇、一名初入职场小白🎓、曾在校期间参加各种省赛、国赛,斩获一系列荣誉🏆

🍓 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿👨‍💻


在当今的软件开发领域,前后端分离项目极为流行。它们以其灵活性、可维护性和可扩展性而受到开发者的青睐。与此同时,容器化技术的崛起也为项目的部署和管理提供了全新的可能性。在本文中,我们将探索如何利用Docker容器化技术快速而高效地部署前后端分离项目。通过将前端和后端分别打包为独立的容器,我们能够实现快速部署、灵活扩展以及更好的资源隔离。无需担心依赖冲突或环境配置问题,我们将一键式地完成整个部署过程。接下来一起深入了解如何利用Docker为前后端分离项目搭建一个强大的容器化应用!

1.搜索nginx镜像

docker search nginx

image-20221108195229659

2.拉取nginx镜像

docker pull nginx:latest

查看一下拉取的镜像

docker images

image-20221108195254243

3.运行镜像

docker run -d --name zsrnginx -p 80:80 -p 443:443 nginx:latest

查看运行情况:

docker ps

image-20221108195333779

4.在/home/ 目录下新建目录 nginx

mkdir /home/nginx
cd /home/nginx

5.拷贝nginx配置文件到主机目录,为文件映射做准备(直接映射会出错)

nginx配置文件、html文件、logs日志文件

docker cp 42928253c136:/etc/nginx/nginx.conf /home/nginx/
docker cp 42928253c136:/etc/nginx/conf.d /home/nginx/conf/
docker cp 42928253c136:/usr/share/nginx/html /home/nginx/html
docker cp 42928253c136:/var/log/nginx/ /home/nginx/logs/

6.停止运行容器并删除容器

docker stop 42928253c136

image-20221108195611820

docker rm 42928253c136

7.重新启动容器(映射相应的目录文件)

docker run -d  --name zsrnginx -p 8088:8088 -p 443:443 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/logs:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -v /home/nginx/conf:/etc/nginx/conf.d --privileged=true     -e TZ=Asia/Shanghai nginx:latest

查看运行情况:

docker ps

image-20221108195741356

8.发布Vue项目

npm install
npm run build

#运行完成后在项目目录下生成dist文件

image-20221109150719763

image-20221109150826068

buil打包后vue pathRewrite不生效

vue.js - Vue 代理设置 在打包后是不是不生效了

9.配置nginx

image-20221109151323410

配置完成后通过 ip+端口号 进行访问。

image-20221109151503777

防火墙命令

#1.检验防火墙是否启动
firewall-cmd --state

#2. 检查8080 端口是否启动:
firewall-cmd --permanent --zone=public --list-ports

#3.开启 8080 端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent

#4.重新启动防护墙
firewall-cmd --reload

#5.验证8080 端口是否生效
firewall-cmd --zone=public --query-port=8080/tcp

#Centos 7中默认的linux的系统默认防火墙不是iptables,而是firewall,此时应该使用以下方式关闭防火墙了。

#开启、重启、关闭firewalld.service服务
service firewalld start 	#开启

service firewalld restart	#重启

service firewalld stop	#关闭

systemctl disable firewalld.service #禁止firewall开机启动

doker安装数据库

1. 拉取Mysql镜像版本

docker pull mysql:8.0

docker images

2. 启动Mysql镜像

docker run -itd --name mysql-8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=需要设置的mysql密码 mysql:8.0

参数说明:

  • -name mysql-8:所建容器的名称
  • -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
  • MYSQL_ROOT_PASSWORD=需要设置的mysql密码:设置 MySQL 服务 root 用户的密码
  • mysql:8.0:使用的镜像,即镜像名:tag(版本)

启动后:使用命令 docker ps 查看

3. 配置Mysql远程链接

# 进入镜像
docker exec -it mysql-8 /bin/bash

# 登录Mysql
mysql -u root -p

# 切换数据库
use mysql

# 设置远程访问
select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | root             | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | mysql_native_password |
+-----------+------------------+-----------------------+
# 这里需要修改配置来允许远程登录
delete from user where user ='root' and host='%';

# 设置所有host都可以访问
update user set host='%' where user ='root';

# 修改加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '待修改密码';

# 刷新生效
FLUSH PRIVILEGES;

后端生成DockerFile打包镜像

将maven的test禁用 (选择test,点闪电),mysql的连接配置需要修改为服务器的ip端口和密码。

image-20221109155546910

# 打包完成
[INFO] --- spring-boot-maven-plugin:2.1.2.RELEASE:repackage (repackage) @ exam ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.112 s
[INFO] Finished at: 2022-11-09T10:46:57+08:00
[INFO] ------------------------------------------------------------------------

# 将target生成jar包放入linux文件夹
#到根目录
mkdir /home/zsr
#进入文件夹内
cd zsr  #将jar包放入该文件夹内

# 新建文件 Dockerfile文件
touch Dockerfile

# 编辑 Dockerfile文件
vim Dockerfile

# Dockerfile 文件内容
FROM java
VOLUME  /tmp
ADD exam-0.0.1-SNAPSHOT.jar exam.jar
EXPOSE 8080 #对外暴露的端口	 ↕ 这两个地方的名字必须一致
ENTRYPOINT ["java","-jar","/exam.jar"]

# 镜像构建build
docker build -f DockerFile -t exam .

# 运行容器
docker run -itd  --name exam -p 8080:8080 exam:latest

通过本文的学习,我们了解到了如何利用Docker容器化技术来部署前后端分离项目。我们学会了将前端和后端分别打包为独立的容器,实现了快速部署、灵活扩展和更好的资源隔离。使用Docker,我们能够轻松解决依赖冲突和环境配置的问题,大大提高了开发和部署的效率。无论是在本地开发环境还是生产环境,Docker都为我们提供了一种优雅而高效的解决方案。希望本文对你理解和应用Docker在前后端分离项目部署中的价值有所帮助。在容器化的世界里,构建出更加强大、可靠的应用程序。

参考文献:

Docker部署前后端分离项目

Docker安装Mysql 8.0

Docker 部署Vue项目

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

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

相关文章

CPSC法规-2023/9月召回案例 多款产品被召回

国内双十一大促的预热已然开始,国外感恩节、万圣节、黑五等产品大促也随即临近,卖家在大量备货的同时,务必保障自身产品通过相关安全测试,一旦产品被相关部门抽查没能达标,或因质量问题被消费者投诉,将可能…

13.4 DirectX内部劫持绘制

相对于外部绘图技术的不稳定性,内部绘制则显得更加流程与稳定,在Dx9环境中,函数EndScene是在绘制3D场景后,用于完成将最终的图像渲染到屏幕的一系列操作的函数。它会将缓冲区中的图像清空,设置视口和其他渲染状态&…

Win10系统备份的方法和步骤

在Win10电脑中,用户为了避免丢失重要的数据而无法找回,提前备份这些重要数据是特别有必要的。但是,许多新手用户不知道Win10系统备份的详细操作方法,接下来小编给大家介绍关于备份Win10系统的简单方法与步骤。 Win10系统备份的方法…

d3中svg标签里插入图片不显示的解决方案

1. 使用背景 在d3中的svg元素中插入图片&#xff0c;图片未正常显示。 2. 使用image标签 首先&#xff0c;在svg中加载图片用的image标签&#xff0c;而不是img标签。支持的图片格式可以是 JPEG、PNG、SVG.。 该元素<img> 一样&#xff0c;会解析渲染为图片。 <im…

vue2进阶学习知识汇总

目录 1.组件之处理边界情况 1.1 子组件访问根组件数据 1.2 子组件访问父组件数据 1.3 父组件访问子组件 1.4 依赖注入 1.5 程序化的事件侦听器 1.6 递归组件 1.7 内联模板 1.8 X-Template 1.9 强制更新 1.10 v-once 2.过渡效果与状态 2.1 过渡效果 2.1.1 单元素/…

VMware Workstation Pro下载安装

VMware Workstation Pro下载安装 下载 VMware Workstation Pro 1. 进入官网下载页面 VMware Workstation Pro下载页面&#xff1a;https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html 2. 选择对应操作系统平台下载 VMware Workstation Pr…

2023年清洁电器行业数据分析:洗地机市场规模持续倍增,进入赛点

洗地机作为清洁电器领域的明星品类&#xff0c;正在成为继扫地机器人之后拉动清洁电器市场大盘的又一核心动力。 在清洁电器领域&#xff0c;扫地机器人、洗地机和吸尘器是三大热门品类。截至今年9月份&#xff0c;根据鲸参谋平台的数据显示&#xff0c;吸尘器的规模继续大幅下…

基于Android 10系统的瑞芯微RK3399K烧写镜像实录

基于Android 10系统的瑞芯微RK3399K烧写镜像实录 1. 前言2. 官网及相关资料3. 烧写固件所需软件4. 直接烧写单一固件步骤5. 固件文件6. Windows下烧写准备6.1 安装 RK USB 驱动6.2 连接设备 7. 烧写固件7.1 烧写统一固件 update.img7.2 烧写分区映像 8. Linux下烧写8.1 upgrade…

Vue组件自定义事件父子

Vue组件父子之间自定义事件 父组件使用props传递数据给子组件&#xff0c;子组件怎么跟父组件通信呢&#xff1f;这时&#xff0c;Vue的自定义事件就派上用场了 示例代码 <div id"zjw1"><span>CQNU--重庆ZJW--同学</span><input placeholder…

数据安全小课堂开讲啦!看这里!

数据安全小课堂开讲啦&#xff01;看这里&#xff01; 1、什么是数据&#xff1f; 《数据安全法》第三条明确&#xff0c;本法所称的数据&#xff0c;就是指任何以电子或者其他方式对信息的记录。小到个人使用手机、电脑等电子产品时浏览的网页、下载的应用、存储的文件&…

【等保小课堂】等保测评后还要花很多钱做等保整改吗?

我国正在严格执行等保政策&#xff0c;过等保企业也越来越多。但大家对于等保政策还不是很了解&#xff0c;有小伙伴在问&#xff0c;等保测评后还要花很多钱做等保整改吗&#xff1f; 等保测评后还要花很多钱做等保整改吗&#xff1f; 【回答】&#xff1a;不一定。等保测评后…

Web前端接入Microsoft Azure AI文本翻译

Azure 文本翻译是 Azure AI 翻译服务的一项基于云的 REST API 功能。 文本翻译 API 支持实时快速准确地进行源到目标文本翻译。 文本翻译软件开发工具包 (SDK) 是一组库和工具&#xff0c;可用于轻松地将文本翻译 REST API 功能集成到应用程序中。 文本翻译 SDK 可跨 C#/.NET、…

一篇文章教会你搭建Hive分布式集群

目录 ​编辑 一、环境描述 二、安装mysql 2.1 卸载mysql 2.1.1 列出安装的mysql 2.1.2 卸载mysql 2.1.3 删除mysql文件目录 2.1.3.1 查看mysql 目录 2.1.3.2 依次删除 2.2.1 下载安装源 2.2.2 安装源rpm 2.2.3 加入rpm密钥 2.2.4 执行安装 2.2.5 设置开机自启动 …

STM32 定时器配置不当导致误差(精度)偏大的问题发现与解决

通用定时器TIM2/3/4/5&#xff0c;PWM输出1Khz的波形 一开始初始化代码如下&#xff1a; void MX_TIM2_Init(void)//1kHz {TIM_ClockConfigTypeDef sClockSourceConfig {0};TIM_MasterConfigTypeDef sMasterConfig {0};TIM_OC_InitTypeDef sConfigOC {0};htim2.Instance T…

Git简明教程

1.Git的定位 在我们自己开发项目的过程中&#xff0c;经常会遇到这样的情况&#xff0c;为了防止代码丢失&#xff0c;或者新变更的代码影响到原有的代码功能&#xff0c;为了在失误后能恢复到原来的版本&#xff0c;不得不复制出一个副本,比如&#xff1a;“坦克大战1.0”“坦…

十个最常用的计算机视觉数据集

如今&#xff0c;人工智能和机器学习领域中最振奋人心的一个分支是计算机视觉&#xff08;Computer Vision&#xff0c;简称CV&#xff09;。CV应用于多种场景&#xff0c;以改善我们的日常生活&#xff0c;并推进科学技术研究。其中包括&#xff1a; 自动驾驶自动生成图像描述…

一、W5100S/W5500+RP2040树莓派Pico<静态配置网络信息>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 优点2.3 应用 3. WIZnet以太网芯片4. 静态IP网络设置示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 编译烧录 5. 注意事项6. 相关链接 1. 前言 从本章开始我们将用WIZnet的W5100S/W5500以太网芯片结合RP…

听GPT 讲Rust源代码--library/std(3)

rust标准库std中的src目录主要包含以下内容和模块: alloc:内存分配相关函数,比如alloc::boxed::Box、alloc::string::String等。 ascii:ASCII相关工具函数。 char:字符相关类型和函数,如Char、char等。 cmp:比较相关trait和函数,如Ord、Eq、PartialOrd等。 env:环境变量相关功能…

机架式服务器介绍

大家都知道服务器分为机架式服务器、刀片式服务器、塔式服务器三类&#xff0c;今天小编就分别讲一讲这三种服务器&#xff0c;第一篇先来讲一讲机架式服务器的介绍。 机架式服务器定义&#xff1a;机架式服务器是安装在标准机柜中的服务器&#xff0c;一般采用19英寸的标准尺寸…

5年测开经验,领导却说:写的测试文档还不如应届生

如果有人问“测试人员最重要的能力是什么” &#xff0c;有人会说“自动化技术”&#xff0c;有人会说“代码能力”&#xff0c;还有人会说“沟通能力”。 以上的各种能力确实挺重要的&#xff0c;但是在我看来&#xff0c;有一种能力长期遭到人们的低估&#xff0c;那就是“文…