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

使用Docker部署项目(本地windows环境项目)

下载好Docker安装包Install Docker Desktop on Windows | Docker Docs

配置页面:

连接上下载镜像,Docker Engine里内容替换成下面的内容:

{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "dns": [ "223.5.5.5", "8.8.8.8" ], "experimental": false, "registry-mirrors": [ "https://docker.1ms.run", "https://dockerproxy.com", "https://mirror.baidubce.com" ] }

点击apply之后,进入项目存放文件夹,确保在项目含有前端文件夹的目录,如图我的是这样:

进入这个dist所在目录,其dist下一级目录里面存放了css、fonts、img等文件夹,如图2;在这个目录下创建Dockerfile的文本,文本名字必须是Dockerfile,保存后再把后缀txt删除。

这个是dist目录进入之后的样子:

双击打开Dockerfile编辑:(这里打包的是前端的程序,后端打包步骤是一样的,只是选择的镜像文件不一样)

FROM nginx COPY ./dist /usr/share/nginx/html

FROM和COPY必须大写,避免有警告;./dist因为我的程序代码主要在dist下面,/usr/share/nginx/html是nginx默认的文件夹,这里项目打包能成功运行要依靠nginx。

上面完成之后,在windows中打开cmd(管理员方式运行)输入进入项目存放的地址,我放在d盘下面:输入

docker build -t hospital-images .

hospital-images是我的程序打包成镜像我自己取的名字,‘·’表示在这个项目目录当前构建镜像

进入主机windows下打开cmd,不进入任何目录:输入

docker run -d --name hospital-container -p 80:80 hospital-images

构建这个项目容器,hospital-container是我自己创建的容器命名 -d表示后台运行 -p是选择运行端口,80被占用就表示:-p 81:80就好,反正换着来。

完成后在docker中可以看见打包好的程序容器

按照上面的步骤打包后端,打包数据库成数据卷,保证数据持久化:

先创建数据卷存放数据库:

docker volume create hospital-mysql

将数据卷导成容器部署:

docker volume create hospital-mysql docker run --name hospital-mysql -v hospital-mysql:/var/lib/mysql -v "D:\虚拟机环境-测试课\hospital\hospital_manager.sql:/docker-entrypoint-initdb.d/hospital_manager.sql:ro"#这个数据库在本地环境中 -e MYSQL_ROOT_PASSWORD=123456#数据库库密码 -e MYSQL_DATABASE=hospital_manager#数据库名 -e MYSQL_USER=test -e MYSQL_PASSWORD=123456 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

同时运行前后端的容器还有数据库的容器。在网页输入http://127.0.0.1:81就可以看见我们打包好程序的页面展示了:并且查询docker ps也可以看见这个容器在运行。

http://www.cnnetsun.cn/news/3532221.html

相关文章:

  • 如何在Windows电脑上完美使用Switch控制器:BetterJoy终极指南
  • 数据科学团队建设三大支柱:数据、产品、生产
  • 【UDQ正弦PWM】单相统一功率因数变流器控制、单相VSI或交直变流器以统一功率因数模式运行、控制器采用不平衡d-q控制在同步参考框架中实现研究附Simulink仿真
  • AI时代软件工程师的范式转移与多Agent协作
  • 深入解析EDMA3控制器:从寄存器配置到实战避坑指南
  • 虚幻引擎逆向工程利器:UnrealMappingsDumper 使用指南与实战心得
  • Unity批量重命名终极解决方案:Mulligan Renamer完全指南
  • 乙醛脱氢酶活性检测:从酒精代谢到干细胞研究的微量化革命
  • Unity批量重命名终极指南:如何用Mulligan Renamer快速整理游戏资源
  • 播音主持培训,差别不在名气而在本地化适配
  • C++ string类深度解析:从内存管理到性能优化实战
  • Apache Fesod:让百万行Excel数据处理不再内存爆炸的Java解决方案
  • dify 1.16.0发布:原生Agent沙箱、MCP协议升级、GPT-5.6兼容适配,一文看懂全部更新
  • 如何在ARM设备上快速创建多系统启动盘:终极解决方案
  • C++实现区域生长算法:从原理到OpenCV实战与性能优化
  • 突破性WebGL数据拦截方案:深度解析Sketchfab模型提取工具的技术实现
  • 3分钟上手JsBarcode:轻松生成专业条形码的完整指南
  • 3步拯救你的老手柄:让DirectInput设备变身Xbox360控制器
  • 为什么Voron 2.4是解决3D打印精度与速度矛盾的开源终极方案
  • 嵌入式视觉引擎EVE子系统SCTM计数器定时器模块详解与性能剖析实战
  • 影刀RPA 流程的暂停与恢复:手动确认与延时等待
  • SparkML工业级数据流水线:构建可观测、可回滚、可演进的机器学习工程体系
  • Visual C++桌面开发实战:从环境配置到项目发布全解析
  • NsEmuTools:如何用现代化桌面工具将NS模拟器管理效率提升83%
  • 深入解析AM275x PLL寄存器配置:从原理到实战的时钟系统优化指南
  • 终极指南:如何用ZyFun跨平台影音管家打造完美观影体验 [特殊字符]
  • AM275x计数器所有权与过滤寄存器:多核安全系统的资源管理实战
  • 3步掌握UI-TARS桌面版:零基础快速上手指南
  • 黑苹果USB端口定制的终极指南:3步解决设备识别与睡眠唤醒问题
  • RyuSAK:三分钟打造你的Switch游戏PC管家