当前位置: 首页 > news >正文

如何将前后端分离项目部署到本地的Docker Desktop容器运行并且访问

文章目录


前言

完成了客户的一个前后端分离项目,要求部署到客户电脑上去展示,那肯定不能直接把代码弄上去跑呀~~~,于是我就想把他们都打包部署到本地的docker容器里面,方便运行和访问,so,以下内容就详细介绍了如何将前后端分离项目部署到本地的docker容器运行。


一、安装Docker Desktop

  1. 安装链接:docker desktop
  2. 点击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拒绝连接

  1. mysql连接问题:因为mysql只允许通过localhost或者127.0.0.1连接,需要修改mysql配置
  2. 在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)中的过度参数化问题&#xf…...

Java内存模型-Java Memory Model(JMM)-可见性、原子性、有序性

5. Java内存模型之JMM 5.1 先从大场面试开始 你知道什么是Java内存模型JMM吗? JMM和volatile他们两个之间的关系? JMM没有那些特征或者它的三大特征是什么? 为什么要有JMM,它为什么出现?作用和功能是什么&#xf…...

基于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…...

DreamTalk多语言支持深度分析:从中文到德语的语音驱动生成

DreamTalk多语言支持深度分析:从中文到德语的语音驱动生成 【免费下载链接】dreamtalk Official implementations for paper: DreamTalk: When Expressive Talking Head Generation Meets Diffusion Probabilistic Models 项目地址: https://gitcode.com/gh_mirro…...

一招提升引用率:如何让你的数据成为AI的“唯一信源”?

随着生成式AI全面渗透搜索场景,传统SEO的流量逻辑正在彻底重构。过去外贸网站优化核心是抢占搜索引擎关键词排名,而当下慧新AI GEO(生成式引擎优化)成为新核心——AI模型不再单纯展示网页链接,而是整合全网数据生成答案…...

Wordpress网站使用siteground security optimizer 及 translatepress多语言插件的翻译问题

问题:发现有的页面翻译出错,如下图:经排查,原因是 SiteGround 主机安全插件中的“锁定并保护系统文件夹”功能,阻止了 TranslatePress 插件的 trp-ajax.php 文件正常执行。解决方法:将 trp-ajax.php 加入白…...

深度解析AI游戏瞄准辅助:从YOLOv10模型到实时视觉识别的完整技术架构

深度解析AI游戏瞄准辅助:从YOLOv10模型到实时视觉识别的完整技术架构 【免费下载链接】yolov8_aimbot Aim-bot based on AI for all FPS games 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8_aimbot 在当今FPS游戏竞技领域,AI瞄准辅助技术…...

ElevenLabs缅甸文TTS落地难题全拆解:从音素对齐失败到语调失真,3步精准修复

更多请点击: https://intelliparadigm.com 第一章:ElevenLabs缅甸文TTS落地难题的根源认知 ElevenLabs官方API当前未原生支持缅甸文(Burmese, my-MM),其语音合成模型训练语料库中缺乏足够规模、高质量、带韵律标注的缅…...

智能车竞赛实战:用逐飞库搞定TC264摄像头与按键中断(附完整代码)

智能车竞赛实战:用逐飞库高效配置TC264中断系统 全国大学生智能汽车竞赛中,实时性往往是决定胜负的关键因素。当摄像头采集图像、传感器读取数据、按键响应控制等任务需要即时处理时,中断机制便成为嵌入式系统的核心武器。TC264作为竞赛常用主…...

dvcs-ripper快速入门:5分钟掌握Git仓库提取技巧 [特殊字符]

dvcs-ripper快速入门:5分钟掌握Git仓库提取技巧 🚀 【免费下载链接】dvcs-ripper Rip web accessible (distributed) version control systems: SVN/GIT/HG... 项目地址: https://gitcode.com/gh_mirrors/dv/dvcs-ripper dvcs-ripper 是一个强大的…...

Midjourney印象派商业级应用白皮书(含版权合规清单):广告/出版/IP衍生必备的5类授权边界判定法

更多请点击: https://kaifayun.com 第一章:Midjourney印象派商业级应用白皮书导论 Midjourney 不仅是生成式AI图像工具,更是一种可嵌入品牌视觉系统、广告创意链路与数字内容工业化流程的视觉协作者。其“印象派”风格能力——强调光色律动、…...

GitHub Desktop汉化工具:轻松掌握中文界面切换的完整指南

GitHub Desktop汉化工具:轻松掌握中文界面切换的完整指南 【免费下载链接】GitHubDesktop2Chinese GithubDesktop语言本地化(汉化)工具 【GitHub桌面客户端中文汉化】 项目地址: https://gitcode.com/gh_mirrors/gi/GitHubDesktop2Chinese 还在为GitHub Desk…...

MySQL系统架构

一、MySQL架构核心层连接层:连接器、认证授权、连接池/线程管理服务层:解析器、优化器、执行器(决定 SQL 怎么执行)存储引擎层:InnoDB/MyISAM 等,负责数据存取(常用 InnoDB)事务与并…...