如何将前后端分离项目部署到本地的Docker Desktop容器运行并且访问
文章目录
前言
完成了客户的一个前后端分离项目,要求部署到客户电脑上去展示,那肯定不能直接把代码弄上去跑呀~~~,于是我就想把他们都打包部署到本地的docker容器里面,方便运行和访问,so,以下内容就详细介绍了如何将前后端分离项目部署到本地的docker容器运行。
一、安装Docker Desktop
- 安装链接:docker desktop
- 点击Download for windows 安装

3.下载成功后双击Docker Desktop Installer.exe进行安装,安装成功后点击close关闭

4.双击桌面图标进入docker desktop,如果出现以下报错,表示WSL版本太低,需要更新

5.安装最新的更新包
用浏览器打开网址:旧版 WSL 的手动安装步骤 | Microsoft Learn 点击下载
6.下载完成后点击安装即可,然后再重启docker desktop,这就安装完成了

7.检验是否安装成功

8.docker设置国内镜像,右击托盘图标选择settings,选择Docker Engine菜单,增加国内镜像地址,增加私有仓库地址:
"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"features":{"buildkit": true },"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]}
9.添加成功后重新启动docker desktop,现在我们尝试拉取nginx镜像,默认最新版本镜像

现在我们的docker里面就多了一个镜像

二、后端项目打包及部署--springboot项目
1.修改IP地址
因为要部署到docker中,需要将连接MYSQL和Redis数据库的IP地址改为本地地址,cmd输入ipconfig获取IP地址

将host改为上面的IPV4地址,mysql和redis都要改

2.项目打包

打包完成后将target目录下的jar包复制到新的文件夹下,然后在此文件夹下新建Dockerfile文件

Dockerfile文件新增以下内容
## AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性
FROM eclipse-temurin:8-jre
##FROM openjdk:8ADD yudao-server.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]## 暴露后端项目的 48080 端口
EXPOSE 48080
然后进入目录执行打包命令(前提要启动docker)admin-server是镜像名称
docker build -f Dockerfile -t admin-server .
注意末尾的空格加一个小点
完成后就可以在docker desktop看到镜像

最后运行我们的镜像文件
docker run -p 48080:48080 --name admin-server
如果报错连接不到MySQL数据库或者redis拒绝连接
- mysql连接问题:因为mysql只允许通过localhost或者127.0.0.1连接,需要修改mysql配置
- 在navacat修改,将user为root的Host修改为%

3.redis问题:修改配置文件redis-windows.conf
注释:bind 127.0.0.1
将protected-mode yes改为protected-mode no
现在后端就可以正常启动啦
二、前端项目打包及部署--vue项目
1.添加文件
由于选用Nginx,所以前端需增加Nginx的相关配置文件,在项目根目录下新建 nginx.conf配置文件。
内容如下:
server {listen 80 default_server;server_name localhost; ## 重要!!!修改成你的外网 IP/域名gzip on;gzip_min_length 1k; # 设置允许压缩的页面最小字节数gzip_buffers 4 16k; # 用来存储 gzip 的压缩结果gzip_http_version 1.1; # 识别 HTTP 协议版本gzip_comp_level 2; # 设置 gzip 的压缩比 1-9。1 压缩比最小但最快,而 9 相反gzip_types text/plain application/x-javascript text/css application/xml application/javascript; # 指定压缩类型gzip_proxied any; # 无论后端服务器的 headers 头返回什么信息,都无条件启用压缩location / { ## 前端项目root /usr/share/nginx/html/;index index.html index.htm;try_files $uri $uri/ /index.html;}location /prod-api/ { ## 后端项目 - 管理后台proxy_pass http://192.168.0.46:48080/; ## 重要!!!proxy_pass 需要设置为后端项目所在服务器的 IPproxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
再创建Dockerfile文件
FROM nginx:latestCOPY dist/ /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/conf.d/default.confEXPOSE 80
2.打包
打包vue项目,本文使用npm run build命令进行项目的打包。
打包完成后,会生成一个dist目录,可以新建文件夹,将三个文件放在一起

构建镜像:docker build -t front-server .

启动:
docker run -p 80:80 -d --name front-server
相关文章:
如何将前后端分离项目部署到本地的Docker Desktop容器运行并且访问
文章目录 前言 完成了客户的一个前后端分离项目,要求部署到客户电脑上去展示,那肯定不能直接把代码弄上去跑呀~~~,于是我就想把他们都打包部署到本地的docker容器里面,方便运行和访问,so,以下内容就详细介…...
前端开发中的try...catch
首先try...catch 结构可以用来处理 Promise 中的异常。在 JavaScript 中,Promise 提供了一种处理异步操作的机制,并且可以通过 .catch() 方法捕获并处理异步操作中抛出的异常。 async function someAsyncFunction() {try {const result await someProm…...
数据加密中,采用密钥管理系统相比加密机的好处
密钥管理系统与加密机都能提供数据加解密,那么针对具体的应用加密,采用密钥管理系统比单纯使用加密机有哪些优点,列表如下: 集中化管理:密钥管理系统可以对加密算法和密钥进行集中化管理,使得企业可以对加…...
Elasticsearch:什么是大语言模型 (LLMs)?
假设你想参加流行的游戏节目 Jeopardy(这是一个美国电视游戏节目,参赛者将获得答案并必须猜测问题)。 要参加演出,你需要了解任何事情的一切。 所以你决定在接下来的三年里每天都花时间阅读互联网上的所有内容。 你很快就会意识到…...
神奇的python的生成器
函数生成器代码 def num():print("message 1")yield 1print("message 2")yield 2print("message 3")yield 3f num() x next(f) # message 1 print(x) # 输出1x next(f) # message 2 print(x) # 输出2x next(f) # message 3 print(x) …...
【来点小剧场--项目测试报告】个人博客项目自动化测试
前述 针对个人博客项目进行测试,个人博客主要由七个页面构成:注册页、登录页、个人博客列表页、博客发布页、博客修改页、博客列表页、博客详情页,主要功能包括:注册、登录、编辑并发布博客、修改已发布的博客、查看详情、删除博…...
【安卓环境搭建报错的解决】
安卓环境搭建报错的解决 问题描述解决方法 问题描述 电脑中新安装的 Android Studio Giraffe | 2022.3.1 Patch ,运行 studio 系统工程,提示如下错误 Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules kotlin-stdlib-1.8.…...
Pruning Pre-trained Language Models Without Fine-Tuning
本文是LLM系列文章,针对《Pruning Pre-trained Language Models Without Fine-Tuning》的翻译。 修剪未微调的预训练语言模型 摘要1 引言2 相关工作3 背景4 静态模型剪枝5 实验6 分析7 结论8 局限性 摘要 为了克服预训练语言模型(PLMs)中的过度参数化问题…...
Java内存模型-Java Memory Model(JMM)-可见性、原子性、有序性
5. Java内存模型之JMM 5.1 先从大场面试开始 你知道什么是Java内存模型JMM吗? JMM和volatile他们两个之间的关系? JMM没有那些特征或者它的三大特征是什么? 为什么要有JMM,它为什么出现?作用和功能是什么…...
基于Springboot实现在线答疑平台系统项目【项目源码+论文说明】
基于Springboot实现在线答疑平台系统演示 摘要 社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大师生的喜爱,也逐渐进入了每个学生的使用。互联网具有便利性,速度快,效率高,成本…...
前端工程化知识系列(1)
目录 1. 什么是前端工程化,以及它为前端开发带来了哪些好处?2. 你使用过哪些版本控制系统?描述一下你在团队中如何处理代码合并和冲突解决的经验。3. 什么是Git,它的工作原理是什么?可以解释一下常用的Git命令吗&#…...
xml文件报错 ORA-00907: 缺失右括号
原来的sql 更改之后 加一个select * from ()...
VScode platformio的使用
一、platformio 工程创建 打开vscode界面你会发现左下多了个家的小图标,点击这里就可以进入platformio。 在右侧Quick Access栏中,有4个选项。可以看得出来,我们这里直接点击创建一个新的工程。 点击New Project打开project配置界面&#x…...
transformer_01
一、传统RNN存在的问题 1.序列前序太长,每个xi要记住前面的特征,而且一直在学,没有忘记,可能特征不能学的太好 2.串行,层越多越慢,难以堆叠很多层; 3.只能看到过去,不能看到未来 搞…...
JavaSE入门---认识方法
文章目录 什么是方法?方法定义实参和形参的关系没有返回值的方法 方法重载方法签名 什么是方法? 在编程中某段功能的代码可能频繁使用到,如果在每个位置都重新实现一遍,会有一些缺点,比如: 使程序变得繁琐…...
编译[Bug]——too few arguments for template template parameter “Tuple“ detected
项目场景: 当使用高版本的cuda去安装低版本pytorch,并且编译用低版本pytorch写的cuda算子时,或者说是VS的版本过高如2022和2019,都有可能会出现某个.h文件或者.c文件报错,如: error: too few arguments f…...
网工内推 | 南天软件,base北京,需持有CCIE认证,最高25k
01 北京南天软件有限公司 招聘岗位:IPT运维工程师 职责描述: 负责客户Cisco语音网络IPT ,CUCM的日常运维,扩容和项目支持,支持路由交换,无线等项目,实施工作以及相关实施文档。 任职要求: 1、…...
Unity有限状态机的简易实现
本人嘴笨,不会说。 该代码实现一个功能较为齐全的有限状态机,可用于大部分的应用场景。 大致实现几个功能 状态更新状态转换状态消息处理全局状态转换和反转状态(转换为前一个状态) 代码分为 状态类状态管理类枚举(…...
什么是NetApp的DQP和如何安装DQP?
首先看看什么是DQP,DQPDisk Qualification Package,文字翻译就是磁盘验证包。按照NetApp的最佳实践,要定期升级DQP包,保证对最新磁盘和磁盘扩展柜的兼容。 本文主要介绍7-mode下如何升级DQP,至于cluster mode另外文章…...
Vue之Vue的介绍安装开发实例生命周期钩子
博主心得: keyup必须与change一起使用v-on.click可以直接写成clickclick“setVal”里的setVal换成数字之后有惊喜VS Code是真的狗,一些报错根本不会直接显示总结:VS code太狗了 1.vue介绍 1.1 什么是vue vue是一个构建用户界面UI的渐进式jav…...
电动汽车模型考虑多种需求响应及微网的虚拟电厂日前优化调度模型的MATLAB代码(含空调负荷)
MATLAB代码:含多种需求响应及电动汽车的微网/虚拟电厂日前优化调度 关键词:需求响应 空调负荷 电动汽车 微网优化调度 虚拟电厂调度 仿真平台:MATLABCPLEX 主要内容:代码主要做的是一个微网/虚拟电厂的日前优化调度模型&#…...
深入解析Kubernetes中的Custom Resource Definitions(CRD):构建云原生“自定义积木”的终极武器
摘要Custom Resource Definition(CRD)是Kubernetes扩展API的核心机制,它允许用户在不修改Kubernetes核心代码的情况下,向集群中注入自定义的资源类型。自Kubernetes 1.7引入以来,CRD已成为云原生生态系统的基石技术&am…...
OpenClaw文件自动化实战:Phi-3-mini-128k-instruct实现智能归档
OpenClaw文件自动化实战:Phi-3-mini-128k-instruct实现智能归档 1. 为什么需要智能文件归档 我的桌面和下载文件夹常年处于"灾难现场"状态——各种PDF、Word文档、截图混杂在一起,文件名要么是随机生成的乱码,要么是随手输入的&q…...
基于双向反激变换器的SOC估算与主动均衡策略仿真研究——复现硕士论文并拓展六节电池模型与均衡策略分析
基于双向反激变换器的SOC估算与主动均衡仿真 可以 [1]复现硕士论文:《锂离子电池SOC估算与主动均衡策略研究_王昊》 [2]六节电池模型:使用Simmulink搭建了六节电池主动均衡仿真 [3]均衡策略:选择了电压、SOC及其分阶段使用作为主动均衡变量&a…...
09_Neo4j知识体系之行业应用与最佳实践
09_Neo4j知识体系之行业应用与最佳实践 体系 行业应用层:金融反欺诈、智能推荐、社交网络分析、知识图谱构建、供应链优化关联能力:与图建模、路径分析、图算法、GraphRAG、实时决策和企业数据治理密切相关适用对象:解决方案架构师、行业数字…...
计算机毕业设计:Python地铁运营可视化平台 Django框架 数据分析 可视化 大数据 机器学习 深度学习(建议收藏)✅
博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,…...
S7-200 MCGS 基于PLC的小型水厂恒压供水系统 带解释的梯形图接线图原理图图纸,io分配
S7-200 MCGS 基于PLC的小型水厂恒压供水系统 带解释的梯形图接线图原理图图纸,io分配,组态画面最近在搞一个小型水厂的恒压供水系统项目,用西门子S7-200 PLC搭配MCGS组态软件,效果挺有意思的。这个系统核心就仨字——稳如狗&#…...
Node.js——dns模块
dns模块1、resolve方法将域名解析为DNS记录2、lookup方法查询IP地址3、reverse方法反向解析IP地址4、dns模块中的各种错误代码在网络编程中,开发者更倾向于使用域名,而不是IP地址来指定网络连接的目标地址。在Node.js中,提供dns模块ÿ…...
环模式饲料制粒机设计【农业机械】【论文+14张CAD图纸+proe三维+答辩稿】
环模式饲料制粒机作为农业机械领域的关键设备,其核心作用在于将粉状饲料原料通过物理挤压转化为颗粒状成品。这一过程不仅提升了饲料的适口性与营养保留率,更通过颗粒的规则形态减少了运输与储存过程中的粉尘损失,为规模化养殖提供了稳定高效…...
从零开始:在Ubuntu 18.04上正确配置CUDA 11.7和bitsandbytes 0.38.0的完整指南
从零构建Ubuntu 18.04下的AI开发环境:CUDA 11.7与bitsandbytes 0.38.0深度配置手册 在深度学习领域,环境配置往往是项目推进的第一道门槛。特别是当我们需要使用bitsandbytes这样的高性能量化工具时,CUDA环境的纯净性与版本匹配度直接决定了后…...

