保定网站建设开发,ppt怎么做流程图,网页上本地网站搜索怎样做,确定网站主题然后规划网站建设上一篇文章中#xff0c;我们使用 Traefik 新版本完成了本地服务网关的搭建。接下来#xff0c;来使用 Traefik 的能力#xff0c;进行一系列相关的基础设施搭建吧。
本篇文章#xff0c;聊聊 MinIO 的单独使用#xff0c;以及结合 Traefik 完成私有化 S3 服务的基础搭建…上一篇文章中我们使用 Traefik 新版本完成了本地服务网关的搭建。接下来来使用 Traefik 的能力进行一系列相关的基础设施搭建吧。
本篇文章聊聊 MinIO 的单独使用以及结合 Traefik 完成私有化 S3 服务的基础搭建。
写在前面
说起 MinIO 和“对象存储”其实在早些时候已经写过不少和 MinIO 相关的内容了
2021 年《使用容器搭建简单可靠的容器仓库》文章中分享了使用 MinIO 作为容器的存储后端。2021 年《从零开始使用开源文档/Wiki软件 Outline二》文章中使用 MinIO 作为 Outline 的存储后端介绍了如何编写初始化配置程序来对 MinIO 进行快速初始化等。2021 年《装在笔记本里的私有云环境网络存储篇上》文章中讲过如何使用 Traefik v2 快速搭建 MinIO 存储网关。2021 年《装在笔记本里的私有云环境网络存储篇中》文章中讲了如何对 MinIO 添加监控程序做性能指标收集。2022 年《使用 Mastodon 搭建个人信息平台调优篇》文章中聊了解决直接使用 MinIO 提供静态资源服务并解决跨域资源使用的问题。 … 这几年随着 AI 行业的爆炸式发展MinIO 的用户量和应用范围变的更加广阔。除了基础模型厂商和研究机构在前几年已经开始大规模使用 MinIO 作为模型训练场景的基础组件多数用户或许只是拿它作为简单的存储组件使用。
时至今日我们不仅仅可以用它来打通各种软件数据存储和共享、进行跨设备的数据备份、同步还能够在 RAG 场景中使用它来做大规模的语料存储。
为了后续上述场景中我们能够愉快玩耍。
让我们从最简单的用法开始了解该如何和 Traefik 一起结合使用快速完成私有化的对象存储服务的搭建。
文本中相关的代码我已经开源在了 soulteary/traefik-minio-example有需要自取。
准备工作
这篇文章的准备工作非常简单只需要完成 Docker 运行环境的安装、下载基础配置代码、程序镜像的下载即可。
获取基础配置代码
使用 git 将包含基础配置的项目下载到本地
git clone https://github.com/soulteary/traefik-minio-example.git然后进入代码目录
cd traefik-minio-exampleDocker 环境的准备
如果你已经安装了 Docker 那么可以跳过这个小节。
如果你还没有安装 Docker不论你使用的是 Windows、Linux、macOS都可以相对快速简单的完成 Docker 的安装和简单配置。
你可以参考之前的一些文章《Docker 环境下使用 Traefik 3 的最佳实践快速上手》中的“Docker 环境”、《基于 Docker 的深度学习环境Windows 篇》中的“准备 Docker 虚拟化运行环境” 或者《在笔记本上搭建高性价比的 Linux 学习环境基础篇》中的“更简单的 Docker 安装”来根据不同的操作系统完成相关的配置这里就不多做赘述了。
MinIO Docker 镜像下载
虽然 MinIO 官方的文档告诉我们使用它直接下载 latest 镜像就行不携带版本。但是在以往的使用过程中发现过升级版本没有完整向后兼容的问题。
为了减少不必要的麻烦这里建议始终携带一个较新版本的如
docker pull minio/minio:RELEASE.2024-08-03T04-33-23Z因为 MinIO 特别小巧下载过程会相对比较快
# docker pull minio/minio:RELEASE.2024-08-03T04-33-23ZRELEASE.2024-08-03T04-33-23Z: Pulling from minio/minio
a4ed047ad504: Pull complete
bbc1fc383cb4: Pull complete
feb4010d8963: Pull complete
929fc7e1cabd: Pull complete
4f4fb700ef54: Pull complete
1081fb4576cf: Pull complete
7e20bc251850: Pull complete
da9a532441d8: Pull complete
Digest: sha256:c933bb53ac226d1f4bdfeac66a3854d02903771e91d7ee2cbc330841a1d77d7e
Status: Downloaded newer image for minio/minio:RELEASE.2024-08-03T04-33-23Z
docker.io/minio/minio:RELEASE.2024-08-03T04-33-23Z完成了镜像的下载我们就可以正式开始折腾了。
基础使用
我们先来通过最简单的 MinIO 运行命令来了解 MinIO 的基础用法和默认程序行为。
在 MinIO 官方的下载页面我们能够看到官方推荐的使用方法
podman run -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address :9001用上一篇文章提到的 “命令行转换配置大法”可以快速的得到下面的 Docker Compose 配置
name: minio
services:minio:ports:- 9000:9000- 9001:9001image: minio/minio:RELEASE.2024-08-03T04-33-23Zcommand: server /data --console-address :9001如果你没有完成前文中“准备工作”中的“获取基础配置代码”的步骤可以将上面的配置保存为 docker-compose.yml然后使用 docker compose up 来启动一个服务 9000 和 9001 端口的 minio 容器实例。
如果你已经完成了基础配置代码的下载上面的配置已经保存在示例的基础配置代码中了。我们可以执行下面的命令快速的体验最基础的 MinIO 使用方法。
cp docker-compose.simple.yml docker-compose.ymldocker compose up当我们看到类似下面的日志之后就可以通过浏览器访问 MinIO 了。
docker compose up
[] Building 0.0s (0/0) docker:desktop-linux
[] Running 1/1✔ Container minio Recreated 0.2s
Attaching to minio-minio-1
minio-minio-1 | MinIO Object Storage Server
minio-minio-1 | Copyright: 2015-2024 MinIO, Inc.
minio-minio-1 | License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
minio-minio-1 | Version: RELEASE.2024-08-03T04-33-23Z (go1.22.5 linux/arm64)
minio-minio-1 |
minio-minio-1 | API: http://172.21.0.2:9000 http://127.0.0.1:9000
minio-minio-1 | WebUI: http://172.21.0.2:9001 http://127.0.0.1:9001
minio-minio-1 |
minio-minio-1 | Docs: https://min.io/docs/minio/linux/index.html
minio-minio-1 | WARN: Detected default credentials minioadmin:minioadmin, we recommend that you change these values with MINIO_ROOT_USER and MINIO_ROOT_PASSWORD environment variables默认情况下我们在浏览器访问 localhost:9000 会被直接重定向到 localhost:9001/login 的 MinIO 控制面板的登录界面。 默认情况下我们使用 minioadmin 作为账号和密码就能够登录 MinIO 后台进行管理了。 如果你使用过 AWS S3、阿里云或腾讯云的对象存储那么你对左侧的“对象浏览器”、“访问密钥管理”、“存储桶管理”、“访问策略管理”、“用户身份管理” 等等功能应该会比较熟悉。
如果你不熟悉也没有关系接下来的内容和后续的使用中多使用使用自然就熟悉了。
使用 MinIO 管理后台存储文件
考虑到有一部分同学没有接触过对象存储或 MinIO 类似的产品这里我们简单介绍下 MinIO 的基础使用。如果你已经熟悉可以跳过这个小节了解更完善的搭建方法。 想要使用 MinIO 这类产品进行对象存储我们首先需要创建一个“存储桶”Bucket在 MinIO 侧边栏中选择 Bucket然后创建一个新的 Bucket 即可名字根据自己的需求起即可我这里随便写了一个“say-hi”。 创建之后我们可以在后台看到这个 Bucket 的详细情况以及做一些细节的权限设置副本设置等等。 选择侧边栏的“对象管理器”然后选择这个我们创建的 Bucket可以随便上传文件或者文件夹。我这里上传了一个使用 AI 将图片生成的短视频。 文件上传之后我们能够在这个控制台进行一些简单的操作下载、分享、预览、删除等等。 比如我这里点击了预览就能够直接在浏览器中浏览这个视频啦。当然你也可以将预览或者下载的链接嵌入你需要嵌入的文档、程序中使用。
使用客户端来完成文件的管理
使用网页进行操作当然非常的简单。但是如果我们想要操作大量的文件或者在其他的程序中使用 MinIO 提供的对象存储能力呢
MinIO 和我们使用的云服务商一样支持通过编程的方式或标准化集成的方式来访问存储能力。
首先我们需要创建一个“访问授权”密钥。 选择侧边栏的 “Access Keys”创建一个新的授权密钥。 默认创建的密钥都是随机创建的字符串 “乱码”。 这里有个小经验密钥名称其实是可以修改的。为了更好的区分访问密钥的用途建议手动修改密钥的名字。
如果你有支持 S3 协议的软件可以使用你自己的软件来测试和验证刚刚启动的 MinIO 服务。如果你没有的话可以根据自己的操作系统选择一些支持 S3 协议的软件。 如果你是 Windows 环境可以使用一些类似 S3 Browser 的工具、包括 Cyberduck 等等完成简单配置进行服务验证。 macOS 同样可以使用 Cyberduck不过我这里使用的是另外一款类似的软件完成简单的配置之后选择“挂载”就能够将 MinIO 中的某个 Bucket挂载为本地的磁盘使用了。 当然我们也可以在各种编程语言中使用对应的 S3 SDK 来使用这个存储能力。除了 AWS 和 MinIO S3 SDK 之外GitHub 上还有许多其他社区用户的实现都可以参考使用。
更完善的 MinIO Docker 使用方案
相比较直接使用官方的默认命令转换的 Docker Compose 配置下面的配置中会更适合我们快速本地搭建一个存储服务
name: minioservices:minio:container_name: minioports:- 9000:9000- 9001:9001image: minio/minio:RELEASE.2024-08-03T04-33-23Zenvironment:# refs: https://min.io/docs/minio/linux/reference/minio-server/settings/core.html- MINIO_DOMAINminio.lab.io- MINIO_COMPRESSION_ENABLEon- MINIO_COMPRESSION_ALLOW_ENCRYPTIONoff# refs: https://min.io/docs/minio/linux/reference/minio-server/settings/root-credentials.html- MINIO_ROOT_USERsoulteary- MINIO_ROOT_PASSWORDsoulteary- MINIO_API_ROOT_ACCESSon# refs: https://min.io/docs/minio/linux/reference/minio-server/settings/console.html- MINIO_BROWSERon- MINIO_BROWSER_LOGIN_ANIMATIONoff- MINIO_BROWSER_REDIRECTfalse- MINIO_BROWSER_SESSION_DURATION365d# refs: https://min.io/docs/minio/linux/reference/minio-server/minio-server.htmlcommand: server /data --address:9000 --console-address:9001volumes:- ./minio/data:/data- ./minio/config:/root/.minioextra_hosts:- minio.lab.io:127.0.0.1healthcheck:# refs:# - https://min.io/docs/minio/linux/reference/minio-mc/mc-ready.html# - https://github.com/minio/minio/issues/18389test: [CMD, mc, ready, local]interval: 3stimeout: 10sretries: 12在上面的配置中我们额外做了一些事情你可以根据你的实际情况进行调整
指定了服务交互使用的域名并对容器内服务绑定了域名为本地避免对外解析。启用了针对文本和一些类型文件的压缩能够减少磁盘占用以及提升对外提供服务时的传输效率。禁用了文件端到端加密减少不必要的性能损耗。重新指定了超级用户的账号和密码都是 soulteary。声明文件访问地址不再自动跳转管理后台增加一些安全性。根据实际需要临时启用后台管理界面并延长有效的登录状态时间为 1 年。显式声明了 API 和后台地址的服务端口。将我们上传的数据挂载到本地避免服务结束数据和容器一起被回收。增加了容器健康检查能够支持服务故障自愈。
和上文中一样我们将配置保存为 docker-compose.yml 使用 docker compose up 就能够体验更可靠的 MinIO 容器服务啦。
cp docker-compose.standalone.yml docker-compose.ymldocker compose up执行完命令就能够看到熟悉但是有一些不同的服务运行状态啦更明确的运行状态。
# docker compose up
[] Building 0.0s (0/0) docker:desktop-linux
[] Running 1/0✔ Container minio-minio-1 Recreated 0.1s
Attaching to minio
minio | MinIO Object Storage Server
minio | Copyright: 2015-2024 MinIO, Inc.
minio | License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
minio | Version: RELEASE.2024-08-03T04-33-23Z (go1.22.5 linux/arm64)
minio |
minio | API: http://172.21.0.2:9000 http://127.0.0.1:9000
minio | WebUI: http://172.21.0.2:9001 http://127.0.0.1:9001
minio |
minio | Docs: https://min.io/docs/minio/linux/index.html当然这样运行的服务我们还是得使用 IP 和端口进行访问并且不支持 HTTPS 访问。不论是在线服务还是内网生产使用都还是比较麻烦的。
所以接下来我们来一步步将上面的配置改造为适合和 Traefik 一起使用的。
完善 MinIO 配置适配 Traefik 使用
还是使用上面的配置在配置中添加“网络”相关内容
name: minioservices:minio:...networks:- traefiknetworks:traefik:external: true接着在程序容器“标签”中声明一些必要的信息来辅助 Traefik 更好的理解和注册我们的程序为 HTTPS 服务
name: minioservices:minio:...labels:# 用于 Traefik 服务发现- traefik.enabletrue- traefik.docker.networktraefik# MinIO API 服务相关# - HTTP 相关设置# 使用 HTTP 协议访问 minio将使用 http80端口 提供服务- traefik.http.routers.minio-http.entrypointshttp# 并自动跳转至 HTTPS 协议443端口- traefik.http.routers.minio-http.middlewaresredir-https# 默认服务域名为 minio.lab.io- traefik.http.routers.minio-http.ruleHost(minio.lab.io)# 服务名称为 noopinternal表示不提供任何服务 (因为自动跳转没必要请求服务)- traefik.http.routers.minio-http.servicenoopinternal# - HTTPS 相关设置# 使用 HTTPS 协议访问 minio将使用 https443端口 提供服务- traefik.http.routers.minio-https.entrypointshttps# 在这个端口上使用 TLS 协议- traefik.http.routers.minio-https.tlstrue# 对响应内容启用 GZIP 压缩- traefik.http.routers.minio-https.middlewaresgzip# 默认服务域名为 minio.lab.io- traefik.http.routers.minio-https.ruleHost(minio.lab.io)# HTTPS 服务名称为 minio-backend使用 9000 端口提供服务- traefik.http.routers.minio-https.serviceminio-backend# 声明服务名称为 minio-backend使用 9000 端口提供服务- traefik.http.services.minio-backend.loadbalancer.server.schemehttp- traefik.http.services.minio-backend.loadbalancer.server.port9000# MinIO Admin 服务相关# - HTTP 相关设置# 使用 HTTP 协议访问 minio将使用 http80端口 提供服务- traefik.http.routers.minio-admin-http.entrypointshttp# 并自动跳转至 HTTPS 协议443端口- traefik.http.routers.minio-admin-http.middlewaresredir-https# 默认服务域名为 minio.console.lab.io- traefik.http.routers.minio-admin-http.ruleHost(minio.console.lab.io)# 服务名称为 noopinternal表示不提供任何服务 (因为自动跳转没必要请求服务)- traefik.http.routers.minio-admin-http.servicenoopinternal# - HTTPS 相关设置# 使用 HTTPS 协议访问 minio将使用 https443端口 提供服务- traefik.http.routers.minio-admin-https.entrypointshttps# 在这个端口上使用 TLS 协议- traefik.http.routers.minio-admin-https.tlstrue# 对响应内容启用 GZIP 压缩- traefik.http.routers.minio-admin-https.middlewaresgzip# 默认服务域名为 minio.console.lab.io- traefik.http.routers.minio-admin-https.ruleHost(minio.console.lab.io)# HTTPS 服务名称为 minio-backend使用 9001 端口提供服务- traefik.http.routers.minio-admin-https.serviceminio-admin-backend# 声明服务名称为 minio-backend使用 9001 端口提供服务- traefik.http.services.minio-admin-backend.loadbalancer.server.schemehttp- traefik.http.services.minio-admin-backend.loadbalancer.server.port9001在上面的配置中我们分别针对 MinIO 的 API 和管理后台进行的配置并分别配置了 HTTP 和 HTTPS 两种协议的访问并将 HTTP 协议的访问请求统一跳转为 HTTPS 访问。
并且考虑到信息安全我们对 API 和管理后台绑定了不同的服务域名。这里我们还可以在后台的“中间件”中添加更多的“安全访问”限制的功能比如额外的身份验证。
name: minioservices:minio:...extra_hosts:- minio.lab.io:127.0.0.1- minio.console.lab.io:127.0.0.1和上面一样为了避免服务域名被解析到容器之外我们可以做一下域名绑定。
完成配置我已经存放到开源项目中 soulteary/traefik-minio-example/docker-compose.traefik.yml考虑到篇幅长度就不再粘贴。
使用方法和上面一样
cp docker-compose.traefik.yml docker-compose.ymldocker compose up服务启动后我们就能够通过新的域名minio.console.lab.io来访问 MinIO 管理后台啦。 我们可以通过许多种方式来通过 MinIO API 接口域名来提供资源的访问包括开放“存储桶”的访问权限给私有存储桶开放某些路径的访问权限或者使用 API 来获取桶中的内容。
因为是验证这里做一个简单的演示将桶类所有路径都设置为开放访问。 在我们设置完所有路径都开放访问后就可以使用下面的路径来访问上文中上传到服务中的资源啦。
# https://域名/桶名称/资源名称https://minio.lab.io/say-hi/bigbro.mp4对上面的服务进行抽象
上面的服务配置中我们 HardCode 了一些内容。
为了能够更快的搭建各种“个性化”的服务来适配不同的场景和上篇文章一样我们对它进行服务抽象。
抽象配置文件
先来定义核心的配置文件 .env
# Docker 服务名称
SERVICE_NAMEminio
# 使用的应用镜像
DOCKER_IMAGEminio/minio:RELEASE.2024-08-03T04-33-23Z
# 服务域名和端口
API_DOMAINminio.lab.io
API_PORT9000
# 管理域名和端口
DASHBOARD_DOMAINminio.console.lab.io
DASHBOARD_PORT9001
# 超级管理员
ADMIN_USERsoulteary
ADMIN_PASSsoulteary完成配置文件的抽象后我们来将配置文件相关的内容应用到 Docker 容器配置中。
更新使用 MinIO 的 Docker 容器配置
先来完成独立使用 MinIO 的容器配置
name: minioservices:minio:container_name: ${SERVICE_NAME}image: ${DOCKER_IMAGE}ports:- 9000:${API_PORT}- 9001:${DASHBOARD_PORT}environment:# refs: https://min.io/docs/minio/linux/reference/minio-server/settings/core.html- MINIO_DOMAIN${API_DOMAIN}- MINIO_COMPRESSION_ENABLEon- MINIO_COMPRESSION_ALLOW_ENCRYPTIONoff# refs: https://min.io/docs/minio/linux/reference/minio-server/settings/root-credentials.html- MINIO_ROOT_USER${ADMIN_USER}- MINIO_ROOT_PASSWORD${ADMIN_PASS}- MINIO_API_ROOT_ACCESSon# refs: https://min.io/docs/minio/linux/reference/minio-server/settings/console.html- MINIO_BROWSERon- MINIO_BROWSER_LOGIN_ANIMATIONoff- MINIO_BROWSER_REDIRECTfalse- MINIO_BROWSER_SESSION_DURATION365d# refs: https://min.io/docs/minio/linux/reference/minio-server/minio-server.htmlcommand: server /data --address:${API_PORT} --console-address:${DASHBOARD_PORT}volumes:- ./minio/data:/data- ./minio/config:/root/.minioextra_hosts:- ${API_DOMAIN}:127.0.0.1healthcheck:# refs:# - https://min.io/docs/minio/linux/reference/minio-mc/mc-ready.html# - https://github.com/minio/minio/issues/18389test: [CMD, mc, ready, local]interval: 3stimeout: 10sretries: 12
接下来是搭配 Traefik 使用的容器配置
name: minioservices:minio:container_name: ${SERVICE_NAME}image: ${DOCKER_IMAGE}environment:# refs: https://min.io/docs/minio/linux/reference/minio-server/settings/core.html- MINIO_DOMAIN${API_DOMAIN}- MINIO_COMPRESSION_ENABLEon- MINIO_COMPRESSION_ALLOW_ENCRYPTIONoff# refs: https://min.io/docs/minio/linux/reference/minio-server/settings/root-credentials.html- MINIO_ROOT_USER${ADMIN_USER}- MINIO_ROOT_PASSWORD${ADMIN_PASS}- MINIO_API_ROOT_ACCESSon# refs: https://min.io/docs/minio/linux/reference/minio-server/settings/console.html- MINIO_BROWSERon- MINIO_BROWSER_LOGIN_ANIMATIONoff- MINIO_BROWSER_REDIRECTfalse- MINIO_BROWSER_SESSION_DURATION365d# refs: https://min.io/docs/minio/linux/reference/minio-server/minio-server.htmlcommand: server /data --address:${API_PORT} --console-address:${DASHBOARD_PORT}networks:- traefiklabels:# 用于 Traefik 服务发现- traefik.enabletrue- traefik.docker.networktraefik# MinIO API 服务相关# - HTTP 相关设置# 使用 HTTP 协议访问 minio将使用 http80端口 提供服务- traefik.http.routers.minio-http.entrypointshttp# 并自动跳转至 HTTPS 协议443端口- traefik.http.routers.minio-http.middlewaresredir-https# 默认服务域名为 minio.lab.io- traefik.http.routers.minio-http.ruleHost(${API_DOMAIN})# 服务名称为 noopinternal表示不提供任何服务 (因为自动跳转没必要请求服务)- traefik.http.routers.minio-http.servicenoopinternal# - HTTPS 相关设置# 使用 HTTPS 协议访问 minio将使用 https443端口 提供服务- traefik.http.routers.minio-https.entrypointshttps# 在这个端口上使用 TLS 协议- traefik.http.routers.minio-https.tlstrue# 对响应内容启用 GZIP 压缩- traefik.http.routers.minio-https.middlewaresgzip# 默认服务域名为 minio.lab.io- traefik.http.routers.minio-https.ruleHost(${API_DOMAIN})# HTTPS 服务名称为 minio-backend使用 9000 端口提供服务- traefik.http.routers.minio-https.serviceminio-backend# 声明服务名称为 minio-backend使用 9000 端口提供服务- traefik.http.services.minio-backend.loadbalancer.server.schemehttp- traefik.http.services.minio-backend.loadbalancer.server.port${API_PORT}# MinIO Admin 服务相关# - HTTP 相关设置# 使用 HTTP 协议访问 minio将使用 http80端口 提供服务- traefik.http.routers.minio-admin-http.entrypointshttp# 并自动跳转至 HTTPS 协议443端口- traefik.http.routers.minio-admin-http.middlewaresredir-https# 默认服务域名为 minio.console.lab.io- traefik.http.routers.minio-admin-http.ruleHost(${DASHBOARD_DOMAIN})# 服务名称为 noopinternal表示不提供任何服务 (因为自动跳转没必要请求服务)- traefik.http.routers.minio-admin-http.servicenoopinternal# - HTTPS 相关设置# 使用 HTTPS 协议访问 minio将使用 https443端口 提供服务- traefik.http.routers.minio-admin-https.entrypointshttps# 在这个端口上使用 TLS 协议- traefik.http.routers.minio-admin-https.tlstrue# 对响应内容启用 GZIP 压缩- traefik.http.routers.minio-admin-https.middlewaresgzip# 默认服务域名为 minio.console.lab.io- traefik.http.routers.minio-admin-https.ruleHost(${DASHBOARD_DOMAIN})# HTTPS 服务名称为 minio-backend使用 9001 端口提供服务- traefik.http.routers.minio-admin-https.serviceminio-admin-backend# 声明服务名称为 minio-backend使用 9001 端口提供服务- traefik.http.services.minio-admin-backend.loadbalancer.server.schemehttp- traefik.http.services.minio-admin-backend.loadbalancer.server.port9001volumes:- ./minio/data:/data- ./minio/config:/root/.minioextra_hosts:- ${API_DOMAIN}:127.0.0.1- ${DASHBOARD_DOMAIN}:127.0.0.1healthcheck:# refs:# - https://min.io/docs/minio/linux/reference/minio-mc/mc-ready.html# - https://github.com/minio/minio/issues/18389test: [CMD, mc, ready, local]interval: 3stimeout: 10sretries: 12networks:traefik:external: true
当所有的配置都是声明式的之后我们的服务部署和维护就会变的非常简单只需要修改其中的“文本参数”即可。在初高中的时候我们就学习过很多次的 “控制变量法” 嘛。当变量就剩下一两个了这些东西还复杂嘛是不是相当简单呢
文本中相关的代码都已经开源在了 soulteary/traefik-minio-example希望你玩的开心。
其他
相信看完上面的内容后你应该已经能够搭建出单一磁盘支持的私有化的 S3 存储服务。
为了服务的可靠性我个人建议做两件事情。
你可以通过各种方式让容器能够同时访问多块物理磁盘。然后结合 MinIO 服务目录设置 MinIO 使用多块磁盘而非一块磁盘。MinIO 支持的纠删码能够让我们以相对低的成本完成数据在物理层面的可靠性保障。
当遇到极端情况的时候数据依旧能够被正确的读取和修复。
除此之外我们还可以进行一些数据备份操作参考 “桶复制” 你可以使用 MinIO 的 CLI 或者管理界面配置数据同步、备份策略确保数据有多份副本存储。
最后
好了这篇文章同样写了比较长的篇幅希望对你有帮助。
–EOF 我们有一个小小的折腾群里面聚集了一些喜欢折腾、彼此坦诚相待的小伙伴。
我们在里面会一起聊聊软硬件、HomeLab、编程上、生活里以及职场中的一些问题偶尔也在群里不定期的分享一些技术资料。
关于交友的标准请参考下面的文章
致新朋友为生活投票不断寻找更好的朋友
当然通过下面这篇文章添加好友时请备注实名和公司或学校、注明来源和目的珍惜彼此的时间
关于折腾群入群的那些事 本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议欢迎转载、或重新修改使用但需要注明来源。 署名 4.0 国际 (CC BY 4.0)
本文作者: 苏洋
创建时间: 2024年08月05日 统计字数: 18533字 阅读时间: 37分钟阅读 本文链接: https://soulteary.com/2024/08/05/best-practices-for-traefik-3-and-minio-in-docker-getting-started-quickly.html