结合前面几篇文章9.如何将jar包打包成docker镜像并进行部署10.docker如何部署一个前端网站docker系列文章https://blog.csdn.net/baidu_32523857/article/details/135212681这篇文章我们使用docker-compose来部署项目。docker-compose是一个编排容器的工具通过一个docker-compose.yml模板文件来定义一组相关联的应用容器帮助我们实现多个相互关联的Docker容器快速部署。我们主要创建三个容器mysql、vue、springboot。其中springboot是我们后台的容器 需要访问mysql。vue项目作为前台需要访问后台接口。打完包的程序(1) 百度网盘通过网盘分享的文件gg-demo.zip链接: https://pan.baidu.com/s/1q0gJjjNWTSZ9K_LQuM_eiA?pwdw7sp 提取码: w7sp2夸克网盘我用夸克网盘给你分享了「gg-demo.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/174b3b6jJm链接https://pan.quark.cn/s/c29f33cba986?pwduJgD提取码uJgD1.docker-compose基本格式docker-compose里面的内容跟我们前面书写的docker run很类似。基本格式类似于下面这样version:1.2services: containerA: image:A container_name:A ports: -80:80描述的是容器之间的依赖、关系等基本指令如下2.mysql的编写项目目录结构./ ├── docker-compose.yml └── mysql ├── init │ └── init.sql ├── conf │ └── mysql.cnf ├── data编写文件version:3services: gg-mysql: image: mysql:5.7 container_name: gg-mysql#容器名称restart: always volumes: - ./mysql/data:/var/lib/mysql#mysql数据存储- ./mysql/conf:/etc/mysql/conf.d#mysql的配置- ./mysql/init:/docker-entrypoint-initdb.d#mysql 初始化脚本environment: -MYSQL_ROOT_PASSWORD123456# mysql数据库root账号的密码-TZAsia/Shanghai ports: -3306:3306#端口映射networks: - gg-network#声明网络#定义网络networks: gg-network: name: gg我们cd到docker-compose.yml文件所在的目录下运行命令docker-composeup-d我们登录到容器看看是否正常初始化我们的sql文件mysql-uroot-p注意如果容器启动后发现没有创建数据库需要先把宿主机data文件夹内容全部清空就是上面 ./mysq/data 这个文件夹用来存储数据的。然后删除容器后重新docker-compose up -d3.springboot的编写我们编写的后台代码有一个默认接口localhost:8082/api/students/getList返回的数据如下下面开始编写springboot的部分:./ ├── docker-compose.yml └── mysql ├── init │ └── init.sql ├── conf │ └── mysql.cnf ├── data └── springboot ├── app1.0.jar ├── Dockerfile我们修改springboot的配置文件,让spring boot可以在docker环境中连接到mysql。我们修改的配置文件参考如下server: port:8082# spring配置spring: datasource: url: jdbc:mysql://gg-mysql:3306/test?useUnicodetruecharacterEncodingutf-8useSSLfalse username: root password:123456driver-class-name: com.mysql.jdbc.Driver# mybaits配置mybatis:# 配置mapper的扫描找到所有的mapper.xml映射文件mapper-locations: classpath*:mappers/**/*Mapper.xml# 搜索指定包别名type-aliases-package: site.longkui.**.entity主要说明的是mysql部分这里填写的mysql的地址是gg-mysql。因为我们把mysql和springboot放在一个网络里这里我们访问的是docker中mysql的容器名。将后台代码打成jar包。我们先在服务器上创建一个文件夹把我们打包好的jar包放进去这个地方我们写的是build而不是images。表示我们要根据APP自己构建实际开发中我们一般回提前把app打包成docker镜像然后这个地方直接填写docker镜像的地址。操作方式参考如何将jar包打包成docker镜像并进行部署下面继续说明build方式。其中docker-compose.yml文件中比较重要的部分是depends_on部分它表示后台依赖于mysql通俗来讲就是让mysql先启动然后后台再启动不然如果后台先启动就可能回出现连接数据库失败的问题。Dockerfile文件参考如下#基础镜像FROM openjdk:11.0-jre-buster#拷贝jar包copy app1.0.jar /app.jar#入口ENTRYPOINT[java,-jar,/app.jar]注意重新操作前请先停止mysql容器然后删除记得要删除宿主机data文件夹的内容不然重新docker-compose-up -d的时候同时也需要注意的是你本地开发mysql的版本和你上面使用的mysql版本要对应不然即使构建成功访问也会报错。此时我们的docker-compose文件参考如下version:3services:# 数据库mysqlgg-mysql: image: mysql:5.7 container_name: gg-mysql#容器名称restart: always volumes: - ./mysql/data:/var/lib/mysql#mysql数据存储- ./mysql/conf:/etc/mysql/conf.d#mysql的配置- ./mysql/init:/docker-entrypoint-initdb.d#mysql 初始化脚本environment: -MYSQL_ROOT_PASSWORD123456# mysql数据库root账号的密码-TZAsia/Shanghai ports: -3306:3306#端口映射networks: - gg-network#声明网络# 后台springbootgg-springboot: build: context: ./springboot dockerfile: Dockerfile container_name: gg-springboot ports: -8080:8082#后台端口映射networks: - gg-network#声明网络depends_on: - gg-msyql#声明依赖关系#定义网络networks: gg-network: name: gg这个地方简单说明一下后台端口的映射问题我这里用8080:8082。其中8080是物理机端口如果你用云服务器要先开通8080端口不然也是无访问到的。执行docker compose up -d后看到我们的容器正常启动。然后访问接口。可以看到接口正常访问而且读取了数据库的内容。注如果你自己写后台请保证你后台代码mysql的版本和docker的保持一致否则访问数据库时回报错。4.vue的编写前面部署了mysql和sprinboot。我们简单用vue写了个前台页面默认访问的上面的接口。我们部署一下vue部分。目录结构./ ├── docker-compose.yml └── mysql ├── init │ └── init.sql ├── conf │ └── mysql.cnf ├── data └── springboot ├── app1.0.jar ├── Dockerfile └── nginx ├── dist ├── nginx.confdist就是我们前台文件打包后的文件夹。nginx.conf是我们nginx的配置文件。nginx.conf的配置文件参考如下worker_processes1;events{worker_connections1024;}http{include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout65;#gzip on;server{listen80;server_name vue-test;location /{# root html/dist; #本地测试位置root /usr/share/nginx/html;#nginx容器规定位置index index.html index.htm;}location /api{# rewrite /api/(.*) /$1 break;proxy_pass http://gg-springboot:8082;}error_page500502503504/50x.html;location/50x.html{root html;}}}需要说明的是这个地方的代理地址写的gg-springboot这是在docker中我们后台springboot的容器名称。/api是我们代理表示前台接口只要是以api开头的就转发到http://gg-springboot:8082 这个地址。这样就能访问到我们的后台了。关于nginx部分我们再增加一个整体参考如下version:3services:# 数据库mysqlgg-mysql: image: mysql:5.7 container_name: gg-mysql#容器名称restart: always volumes: - ./mysql/data:/var/lib/mysql#mysql数据存储- ./mysql/conf:/etc/mysql/conf.d#mysql的配置- ./mysql/init:/docker-entrypoint-initdb.d#mysql 初始化脚本environment: -MYSQL_ROOT_PASSWORD123456# mysql数据库root账号的密码-TZAsia/Shanghai ports: -3306:3306#端口映射networks: - gg-network#声明网络# 后台springbootgg-springboot: build: context: ./springboot dockerfile: Dockerfile container_name: gg-springboot ports: -8080:8082#后台端口映射networks: - gg-network#声明网络depends_on: - gg-msyql#声明依赖关系#前台vuegg-nginx-vue: image: nginx container_name: gg-nginx-vue ports: -80:80 volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/dist:/usr/share/nginx/html depends_on: - gg-springboot networks: - gg-network#定义网络networks: gg-network: name: gg我们修改后在相应的文件夹下执行docker compose up -d再访问我们的公网地址(项目网址默认是IP)就可以看到我们编写的前台页面了点击“查询所有”就能从后台的springboot获取数据了。
企业数字化 ERP 产品动态
相关推荐
第247篇_全网羊毛优惠活动聚合采集 【Python爬虫实战】第247篇:羊毛信息不再东奔西跑——多平台优惠活动聚合去重抓取实战 所属专栏:【Python爬虫实战】从零到企业级爬虫工程师(CSDN 付费专栏) 本篇篇目:第 247 篇(多源聚合与去重专场,每篇都是一个可独立上手的实战项目) 难度等级:中高级,重点练「多源… · 2026/9/27 9:30:52
南京seo关键词优化资讯图解步骤:网站被黑别慌,3招找回排名 南京seo关键词优化资讯图解步骤:网站被黑别慌,3招找回排名 网站突然打不开,或者首页被挂满非法广告,后台密码改了也没用?这是很多南京站长半夜惊醒时的噩梦。别急着删库重建,那只是掩盖问题,不是解决根源。根据中国互联网络信息中心(CNNIC)… · 2026/9/27 9:30:46
第248篇_电商秒杀闪购商品实时采集 【Python爬虫实战】第248篇:秒杀那一秒发生了什么——电商秒杀商品价格与库存时间窗口采集实战 所属专栏:【Python爬虫实战】从零到企业级爬虫工程师(CSDN 付费专栏) 本篇篇目:第 248 篇(高并发与时序采集专场,高级篇) 难度等级:高级,需要线程、HTTP 头、时间同步基础… · 2026/9/27 9:30:46
微信公众号为什么没法直接订阅?用 wewe-rss 十分钟把第一篇公众号文章推进阅读器 微信公众号为什么没法直接订阅?用 wewe-rss 十分钟把第一篇公众号文章推进阅读器 【免费下载链接】wewe-rss 🤗更优雅的微信公众号订阅方式,支持私有化部署、微信公众号RSS生成(基于微信读书) 项目地址: https://git… · 2026/9/27 10:16:49
如何三步装好 Jellyfin 桌面客户端:音频直通与硬件解码实战指南 如何三步装好 Jellyfin 桌面客户端:音频直通与硬件解码实战指南 【免费下载链接】jellyfin-desktop Jellyfin Desktop Client 项目地址: https://gitcode.com/GitHub_Trending/je/jellyfin-desktop
浏览器放 4K 总卡顿、5.1 声道出不来?这些浏览器… · 2026/9/27 10:16:49
UVa 12448 Casino Advantage 题目描述
大西洋城的几家赌场正在考虑推出一款新游戏以吸引赌徒。游戏中,一个球被随机滚入一个划分为 NNN 个槽位(编号 111 至 NNN)的轮盘,球停下的槽位编号即为该次滚动的结果。之后取出球,再滚下一个,总共… · 2026/9/27 10:16:43
ebpf-go 的 Windows 支持指南:基于 eBPF for Windows 构建跨平台 Go 应用 系统底层网络可观测性 【免费下载链接】ebpf ebpf-go is a pure-Go library to read, modify and load eBPF programs and attach them to various hooks in the Linux kernel. 项目地址: https://gitcode.com/gh_mirrors/eb/ebpf 点击查看 免费下载 本指南围绕 eb… · 2026/9/27 10:16:43
漫画网站怎么做:3种方案对比与避坑指南 漫画网站怎么做:3种方案对比与避坑指南 很多小伙伴私信问我,手里攒了一堆漫画资源,或者自己会画画,想做个站出来分享或变现,但看着后台代码就头大。自己不会代码想做网站,这确实是最大的拦路虎。别慌,今天我就把这套 避坑指南… · 2026/9/27 10:16:30
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01