📝 PostgreSQL 18.x Docker 镜像 PGDATA 路径变更说明
📝 PostgreSQL 18.x Docker 镜像 PGDATA 路径变更说明本文档旨在记录 PostgreSQL 官方 Docker 镜像自版本 18.0 起,其默认数据目录(PGDATA)路径的变化,并指导如何正确配置卷挂载以实现数据持久化。
🚀 核心变更:PGDATA 路径版本化从 PostgreSQL 18.x 开始,官方 Docker 镜像将数据库的数据存储位置 (PGDATA 环境变量) 更改为版本特定的路径。
PostgreSQL PGDATA 路径变更
PostgreSQL 版本
旧版本 PGDATA 默认路径
18.x 版本 PGDATA 默认路径
17.x 及以前
/var/lib/postgresql/data
N/A
18.x 及以后
N/A
/var/lib/postgresql/18/docker
🔍 变更原因采用版本化的 PGDATA 路径有以下重要意义:
便于升级 (pg_upgrade): 允许用户将不同主版本的数据库数据目录(例如 /var/lib/postgresql ...
为 Angular Material 应用添加完美深色模式支持
💡 为 Angular Material 应用添加完美深色模式支持深色模式(Dark Mode)是现代应用不可或缺的功能。它不仅能提升用户在低光环境下的舒适度,还能让应用看起来更专业、更时尚。
如果你正在使用 Angular Material,实现深色模式可以非常优雅和高效。本文将分享我如何通过一个独立的 **ThemePickerComponent**,结合 Angular Signals 和 系统偏好检测,为我的应用添加深色模式的完整过程。
🛠️ 核心思路概览我的深色模式解决方案基于以下几个关键机制:
CSS 变量与 color-scheme: 利用 Angular Material 基于 CSS 变量的主题机制,并通过在 <html> 标签上切换 color-scheme 属性来控制主题。
Angular Signals: 使用 signal() 存储和管理当前的主题模式 ('light' 或 'dark')。
持久化与偏好: 通过 localStorage 记住用户的选择,同时使用 window.matchMedia 监听用户操 ...
Spring WebFlux 文件上传:从本地存储到 MinIO 集成 🚀
前言在现代 Web 应用中,高效可靠的文件存储是必不可少的一环。在 Spring WebFlux 响应式编程模型下,处理文件上传需要特别注意流(Flux)和非阻塞操作。
本文将基于一个 Spring WebFlux 的文件上传接口,演示如何从最初的本地文件系统存储方案,平滑地迁移并集成到 MinIO 对象存储服务,实现更具可扩展性和稳定性的文件存储。
🎯 方案切换:为何选择 MinIO?最初的文件上传方案通常是将文件直接存储在服务器的本地文件系统。对于生产环境或需要横向扩展的应用,MinIO(或其他兼容 S3 协议的对象存储)是更优的选择,它提供了高可用、高扩展性和可靠性强的优势,同时解耦了应用和存储。
🛠️ 第一步:部署 MinIO 服务在本地开发或测试环境中,最便捷的部署 MinIO 的方式是使用 Docker Compose。
将以下配置保存为 docker-compose.yaml 文件:
1234567891011121314151617181920212223services: minio: image: minio/minio:RELEASE.2025-04- ...
在 Spring WebFlux 中实现文件上传到本地
在 Spring WebFlux 中实现文件上传到本地引言本文旨在介绍如何在 Spring WebFlux 框架下,实现将文件上传至本地服务器的功能。虽然目前的代码示例侧重于本地存储,但其设计思路也为未来扩展至对象存储服务(如 MinIO)奠定了基础。通过本文的学习,您将掌握在响应式编程模型下处理文件上传的关键技术。
具体实现过程1. 项目搭建与依赖引入首先,您需要一个基于 Spring Boot 3.5.0 的项目。如果您使用 Gradle 作为构建工具,可以在 build.gradle 文件中添加以下依赖:
1234567dependencies { // ... 其他 Spring Boot 依赖 implementation 'org.springframework.boot:spring-boot-starter-webflux' // Swagger UI 依赖 implementation 'org.springdoc:springdoc-openapi-starter-webflux-ui:2.8.6 ...
Gradle 强制使用指定版本的 Spring Web JAR
Gradle 强制使用指定版本的 Spring Web JAR场景说明由于公司Artifactory已禁止下载Spring Web 5.x相关依赖,必须通过本地JAR包spring-web-5.3.31.jar,强制让所有依赖Spring Web的其他库使用这个指定版本。
方法一:使用强制版本解析这种方法通过 Gradle 的强制版本功能,强制所有依赖使用指定版本。
Gradle 配置在 build.gradle 文件中添加以下配置:
123456789101112131415configurations.all { // 强制所有 spring-web 依赖使用 5.3.31 版本 resolutionStrategy { force 'org.springframework:spring-web:5.3.31' }}dependencies { // 添加本地 JAR 文件 implementation files('libs/spring-web-5.3.3 ...
在内网 Kubernetes 集群上使用 Helm 安装 Rancher 并支持域名访问
前言本指南将帮助您在 192.168.31.222 的内网服务器上,使用 Helm 安装 Rancher,并通过域名 rancher.damingerdaiinternal.com 访问。
1. 前提条件✅ 已部署 Kubernetes 集群(单节点或多节点均可)✅ 已安装 kubectl 和 Helm 3✅ 已配置 DNS 或 Hosts 解析(确保 rancher.damingerdaiinternal.com 指向 192.168.31.222)✅ 服务器开放 80 和 443 端口
2. 安装 cert-manager(用于证书管理)Rancher 依赖 cert-manager 管理 TLS 证书。
2.1 安装 cert-manager CRD1kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.crds.yaml
2.2 添加 Helm 仓库并安装 cert-manager123456helm repo add ...
使用中国手机号码验证mailgun账号
前言Mailgun 是一个专为开发者设计的邮件发送平台,支持通过 API 高效、稳定地发送和接收邮件。它广泛用于用户通知、营销邮件、自动化开发信等场景。每个月可免费发送10000封邮件,可以添加1000个域名,每封邮件都有跟踪日志,简单明了的管理界面。
注册点 mailgun.com 右上角的“start for free“进去是不会给免费版选项的,只有 free trial,而 https://www.mailgun.com/pricing/ 页面则有免费 plan,常规注册即可,无需填写信用卡.
验证mailgun会发送邮件要求验证号码。在验证页面会要求用户提供手机号验证。但是对中国手机号码来说,可能存在收不到验证码的可能。
解决在mailgun后台,点击右上角的问号❓,点击“Support”按钮。提交一个工单,点击左下方“Open a ticket”的开工单按钮。在开工单页面下拉选择“Account Management”类别,然后输入问题标题和具体内容。
这是我总结的模版:
1234Subject: Unable to Verify Email Due to Excessiv ...
podman登录非https的私有仓库
前言本文的目的是为了解决podman登陆非https的私有仓库。这里使用192.168.31.220:5000威力
方案1:禁用 TLS 验证(临时解决方案)对于测试环境或内部信任的网络,可以临时禁用 TLS 验证:
1podman login --tls-verify=false 192.168.31.220:5000
注意:生产环境不建议禁用 TLS 验证,这会降低安全性。
方案2: 配置仓库为不安全仓库编辑 /etc/containers/registries.conf文件,添加以下内容:
123[[registry]]location = "192.168.31.220:5000"insecure = true
方案3:正确配置 HTTPS(生产环境推荐)如果这是生产环境,建议为您的私有仓库配置正确的 HTTPS。
使用systemd部署podman的容器
podman的问题podman是一个容器运行时环境,提供与 Docker 非常相似的功能并不需要在你的系统上运行任何守护进程。没有守护进程就意味着如果你想使用podman部署容器,是没有办法使用类似docker的方式去实现自动重启功能。如果使用k8s部署容器那问题不大,如果就纯容器部署,可以使用podman给出的方案:
123456789101112131415161718192021222324252627282930313233343536373839podman generate systemd --help[DEPRECATED] Generate systemd unitsDescription: Generate systemd units for a pod or container. The generated units can later be controlled via systemctl(1).DEPRECATED command:It is recommended to use Quadlets for running containers and po ...
在spring中使用gmail发送邮件
申请gmail的应用专用密码首先你需要一个gmail账号,然后才能申请gmail的应用专用密码。
想要申请应用专用密码必须开启两步验证:
google似乎默认并不想让用户直接创建应用专用密码,需要通过右上角搜索框输入“应用专用密码”才能进入相关页面。如果使用英文页面则搜索“App Password”。
然后你就可以创建“应用专用密码”
保存密码,gmail仅仅会显示这一次。
使用spring发送邮件这里实际使用的是spring boot。
导入spring-boot-starter-mail:
对于maven用户:
12345<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> <version>${spring-boot-version}</version></dependency>
对 ...