前后端通过docker部署笔记
- 项目背景:这是一个SpringBoot+vue3的项目,通过maven打包后,需要在Linux服务器上部署,本篇博客主要记录docker-compose.yaml文件的含义:

docker-compose.yml 文件中定义了一个 algorithm_platform_frontend 容器,该容器基于 nginx:latest 镜像,并通过数据卷 (volumes) 绑定了 前端静态文件 和 Nginx 配置文件。下面详细解析各个参数的作用,以及 :z 选项的含义。
1. docker-compose.yml 解析
algorithm_platform_frontend:image: nginx:latestcontainer_name: algorithm_platform_frontendhostname: algorithm_platform_frontendrestart: unless-stoppedvolumes:- ./frontend/html:/usr/share/nginx/html:z- ./frontend/nginx.conf:/etc/nginx/nginx.conf:zports:- "8000:80"networks:- algorithm_platform_network
参数解析
| 参数 | 作用 |
|---|---|
image: nginx:latest | 使用官方 nginx 最新版镜像 |
container_name: algorithm_platform_frontend | 指定容器名称,方便管理 |
hostname: algorithm_platform_frontend | 设置容器的主机名 |
restart: unless-stopped | 容器异常退出时自动重启,但如果手动停止,则不会重启 |
volumes | 挂载数据卷(绑定前端文件和 Nginx 配置文件) |
ports | 映射端口(宿主机 8000 -> 容器 80,外部访问 http://localhost:8000) |
networks | 指定容器加入 algorithm_platform_network 网络 |
2. volumes 详解
volumes:- ./frontend/html:/usr/share/nginx/html:z- ./frontend/nginx.conf:/etc/nginx/nginx.conf:z
挂载的路径
-
./frontend/html:/usr/share/nginx/html:z- 作用:将宿主机
./frontend/html目录(即前端 HTML 代码)挂载到 Nginx 的/usr/share/nginx/html,使 Nginx 直接读取宿主机的静态资源。 - 效果:修改
./frontend/html里的文件后,Nginx 自动加载更新,无需重新构建镜像。
- 作用:将宿主机
-
./frontend/nginx.conf:/etc/nginx/nginx.conf:z- 作用:将
nginx.conf配置文件挂载到容器的/etc/nginx/nginx.conf,自定义 Nginx 配置。
- 作用:将
3. :z 选项的作用
在 volumes 挂载路径的末尾,:z 选项是 SELinux 相关的设置,适用于启用了 SELinux(如 CentOS、RHEL)的环境。
:z 的作用
- 改变 SELinux 上的标签,让容器能访问宿主机文件。
- SELinux 默认会阻止 Docker 访问 非
docker目录的文件,:z选项会自动添加 共享访问权限。
是否需要 :z?
- 如果使用 CentOS / RHEL,而且 SELinux 开启,那么需要
:z选项。 - 如果是 Ubuntu / Debian / macOS / Windows,则不需要
:z,可以去掉。
📌 示例:去掉 :z
volumes:- ./frontend/html:/usr/share/nginx/html- ./frontend/nginx.conf:/etc/nginx/nginx.conf
如果你的环境 没有 SELinux,可以去掉 :z,避免不必要的权限修改。
4. 启动容器
📌 启动 docker-compose
docker-compose up -d
-d:后台运行容器- 访问
http://localhost:8000,应该能看到你的前端页面
📌 查看运行状态
docker ps
📌 查看日志
docker logs -f algorithm_platform_frontend
📌 更新配置后重启
如果修改了 nginx.conf 或 html 文件:
docker restart algorithm_platform_frontend
5. 总结
- 这个
docker-compose.yml文件创建了一个nginx容器,负责运行前端静态页面。 - 挂载数据卷:
html目录:提供前端代码nginx.conf:自定义 Nginx 配置
:z选项:用于 SELinux 权限管理,非 SELinux 环境可以去掉。- 端口映射 8000:80,让外部可以通过
http://localhost:8000访问前端。
🚀 建议:
- 确保
./frontend/html目录存在,否则 Nginx 可能无法启动。 - 如果
nginx.conf有错误,可以进入容器调试:docker exec -it algorithm_platform_frontend /bin/sh cat /etc/nginx/nginx.conf nginx -t # 测试 Nginx 配置是否正确
如果你有更具体的问题,欢迎找博主讨论!😊
相关文章:
前后端通过docker部署笔记
项目背景:这是一个SpringBootvue3的项目,通过maven打包后,需要在Linux服务器上部署,本篇博客主要记录docker-compose.yaml文件的含义: docker-compose.yml 文件中定义了一个 algorithm_platform_frontend 容器&#…...
五十天精通硬件设计第四天-场效应管知识及选型
场效应管(FET,Field-Effect Transistor)是一种利用电场效应控制电流的半导体器件,广泛应用于放大、开关等电路中。以下是场效应管的基本知识及选型要点: 一、场效应管的基本知识 1. 类型: - **结型场效应管(JFET)**: - N沟道和P沟道两种类型。 - 栅极与…...
了解 ALV 中的 field catalog (ABAP List Viewer)
在 ABAP 中,字段目录是使用 ALV (ABAP List Viewer) 定义内部表中的数据显示方式的关键元素。它提供对 ALV 中显示的字段的各种属性的控制,例如列标题、对齐方式、可见性、可编辑性等。关键概念: Field Catelog 字段目…...
【基于SprintBoot+Mybatis+Mysql】电脑商城项目之修改密码和个人资料
🧸安清h:个人主页 🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 目录 🎃1.修改密码 -持久…...
十一、CentOS Stream 9 安装 Docker
一、Docker 环境安装 1、软件源(仓库)信息 使用如下命令可列出当前系统配置的所有软件源(仓库)信息 # 列出所有软件源 dnf repolist 这表明系统有三个仓库 AppStream 、 BaseOS、Extras-Common 被启用 2、配置软件源镜像 使用如下命令可配置 Docker 软件包下载的镜像地址 …...
FreeRTOS学习 --- 中断管理
什么是中断? 让CPU打断正常运行的程序,转而去处理紧急的事件(程序),就叫中断 中断执行机制,可简单概括为三步: 1,中断请求 外设产生中断请求(GPIO外部中断、定时器中断…...
如何在Intellij IDEA中识别一个文件夹下的多个Maven module?
目录 问题描述 理想情况 手动添加Module,配置Intellij IDEA的Project Structure 问题描述 一个文件夹下有多个Maven项目,一个一个开窗口打开可行但是太麻烦。直接open整个文件夹会发现Intellij IDEA默认可能就识别一个或者几个Maven项目,如…...
机器学习模型--线性回归、逻辑回归、分类
一、线性回归 级别1:简单一元线性回归(手工实现) import numpy as np import matplotlib.pyplot as plt# 生成数据 X np.array([1, 2, 3, 4, 5]) y np.array([2, 4, 5, 4, 5])# 手动实现梯度下降 def gradient_descent(X, y, lr0.01, epo…...
gitlab个别服务无法启动可能原因
目录 一、gitlab的puma服务一直重启 1. 查看日志 2. 检查配置文件 3. 重新配置和重启 GitLab 4. 检查系统资源 5. 检查依赖和服务状态 6. 清理和优化 7. 升级 GitLab 8. 查看社区和文档 二、 gitlab个别服务无法启动可能原因 1.服务器内存或磁盘已满 2.puma端口冲突…...
react的antd表格数据回显在form表单中
1、首先为table添加编辑按钮 {title: 操作,align: center,render: (_: any, record: any) > (<div style{{ display: flex, alignItems: center, justifyContent: space-evenly }}><Buttonsize"small"onClick{() > deitor(record)} style{{ margin…...
深度分析:网站快速收录与网站内容多样性的关系
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/87.html 网站快速收录与网站内容多样性之间存在着密切的关系。以下是对这一关系的深度分析: 一、网站内容多样性对快速收录的影响 提升搜索引擎抓取效率: 多样化的…...
feign 远程调用详解
在平常的开发工作中,我们经常需要跟其他系统交互,比如调用用户系统的用户信息接口、调用支付系统的支付接口等。那么,我们应该通过什么方式进行系统之间的交互呢?今天,简单来总结下 feign 的用法。 1:引入依…...
【Android】jni开发之导入opencv和libyuv来进行图像处理
做视频图像处理时需要对其进行水印的添加,放在应用层调用工具性能方面不太满意,于是当下采用opencvlibyuv方法进行处理。 对于Android的jni开发不是很懂,我的需求是导入opencv方便在cpp中调用,但目前找到的教程都是把opencv作为模…...
【Elasticsearch】terms聚合误差问题
Elasticsearch中的聚合查询在某些情况下确实可能存在误差,尤其是在处理分布式数据和大量唯一值时。这种误差主要来源于以下几个方面: 1.分片数据的局部性 Elasticsearch的索引通常被分成多个分片,每个分片独立地计算聚合结果。由于数据在分…...
深入理解 `box-sizing: border-box;`:CSS 布局的利器
深入理解 box-sizing: border-box;:CSS 布局的利器 默认行为示例代码 使用 box-sizing: border-box;示例代码 全局应用 box-sizing: border-box;示例代码 实际应用场景1. 表单布局2. 网格布局 总结 在 CSS 中,box-sizing 属性决定了元素的总宽度和高度是…...
【原子工具】快速幂 快速乘
题幂算.一切即1 阴阳迭变积微著,叠浪层峦瞬息功 莫道浮生千万事,元知万象一归宗 文章目录 快速幂原始快速幂(O(logn))二分递归形式非递归形式 模下意义的快速幂(O(logn))二分递归形式非递归形式 快速乘龟速…...
Apache SeaTunnel 整体架构运行原理
概述 SeaTunnel 缘起 数据集成在现代企业的数据治理和决策支持中扮演着至关重要的角色。随着数据源的多样化和数据量的迅速增长及业务需求的快速变化,企业需要具备强大的数据集成能力来高效地处理数据。SeaTunnel通过其高度可扩展和灵活的架构,帮助企业…...
Nginx如何实现 TCP和UDP代理?
文章目录 前言 Nginx之TCP和UDP代理 工作原理示意图 配置文件和命令参数注释 基本命令 配置实例说明 TCP代理实例UDP代理实例 总结 前言 Nginx是一个高性能的HTTP和反向代理服务器,同时也支持TCP/UDP代理。在1.9.13版本后,Nginx已经支持端口转发&…...
蓝桥杯思维训练营(三)
文章目录 题目详解680.验证回文串 II30.魔塔游戏徒步旅行中的补给问题观光景点组合得分问题 题目详解 680.验证回文串 II 680.验证回文串 II 思路分析:这个题目的关键就是,按照正常来判断对应位置是否相等,如果不相等,那么就判…...
开箱即用的.NET MAUI组件库 V-Control 发布了!
之前写过挺多的MAUI Sample,其中有很多代码可以打包成组件,当组件完善到一定程度,我会把控件封装起来放到控件库中。 今天,在这个仓库建立一年零八个月后,我觉得可以考虑将其作为开源库发布。 有很多网友在观望.NET …...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果