WordPress 是全球最流行的博客和内容管理平台。它功能强大且简单易用,从学生到跨国公司,都使用它来构建美观、实用的网站。
Bitnami WordPress Helm Chart 用于在 Kubernetes 集群上通过 Helm 包管理器引导 WordPress 部署。该 Chart 还集成了 Bitnami MariaDB Chart(满足 WordPress 的数据库需求)和 Bitnami Memcached Chart(用于缓存数据库查询)。
WordPress ***概述
.htaccess 配置consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/wordpress
使用指定发布名称安装:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/wordpress
需替换占位符:
REGISTRY_NAME(如registry-1.docker.io)和REPOSITORY_NAME(如bitnamicharts)
查看所有发布:
consolehelm list
Bitnami Charts 允许为所有容器设置资源请求和限制,通过 resources 参数配置。生产环境必须设置资源请求,并根据实际需求调整。示例:
yamlresources: requests: cpu: 500m memory: 512Mi limits: cpu: 1000m memory: 1Gi
也可使用 resourcesPreset 预设(如 small、medium、large),但生产环境建议手动配置以适配具体需求。
Bitnami Charts 在首次启动时配置凭证,后续更新需手动操作:
SECRET_NAME、PASSWORD 和 SMTP_PASSWORD):
shellkubectl create secret generic SECRET_NAME \ --from-literal=wordpress-password=PASSWORD \ --from-literal=smtp-password=SMTP_PASSWORD \ --dry-run -o yaml | kubectl apply -f -
metrics.enabled=true,将部署包含 apache-exporter 的 Sidecar 容器和 metrics Servicemetrics.serviceMonitor.enabled=true,自动创建 ServiceMonitor 资源禁用内置 MariaDB 并连接外部数据库:
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/wordpress \ --set mariadb.enabled=false \ --set externalDatabase.host=myexternalhost \ --set externalDatabase.user=myuser \ --set externalDatabase.password=mypassword \ --set externalDatabase.database=mydatabase \ --set externalDatabase.port=3306
若数据库包含现有 WordPress 数据,需设置
wordpressSkipInstall=true跳过安装向导
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/wordpress \ --set wordpressConfigureCache=true \ --set memcached.enabled=true
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/wordpress \ --set wordpressConfigureCache=true \ --set memcached.enabled=false \ --set externalCache.host=myexternalcachehost \ --set externalCache.port=***
启用 Ingress 以通过域名访问 WordPress:
yamlingress: enabled: true hostname: wordpress.example.com tls: true annotations: kubernetes.io/ingress.class: nginx cert-manager.io/cluster-issuer: letsencrypt-prod # 若使用 cert-manager # 额外主机配置(可选) extraHosts: - name: blog.example.com path: /blog annotations: {}
需确保集群已安装 Ingress 控制器(如 nginx-ingress-controller)
支持多种 TLS 证书管理方式:
手动创建 TLS Secret:
consolekubectl create secret tls wordpress-tls \ --cert=path/to/certificate.pem \ --key=path/to/private-key.pem
(Secret 名称需为 <ingress.hostname>-tls,如 wordpress.example.com-tls)
通过 cert-manager 自动签发: 在 Ingress 注解中添加:
yamlannotations: cert-manager.io/cluster-issuer: "letsencrypt-prod" acme.cert-manager.io/http01-ingress-class: "nginx"
Helm 管理证书:
yamlingress: tls: true secrets: - name: wordpress-tls certificate: | -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- key: | -----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY-----
wordpress-htaccess.conf(位于 /opt/bitnami/wordpress/),Apache 配置为 AllowOverride None(禁用 .htaccess).htaccess,需:
yamlallowOverrideNone: false htaccessPersistenceEnabled: true # 持久化 .htaccess 编辑
custom-htaccess),并配置:
yamlallowOverrideNone: true customHTAccessCM: custom-htaccess
使用 Velero 备份和恢复 WordPress 部署:
详细步骤参考 Bitnami Velero 备份指南
WordPress 数据和配置存储在容器的 /bitnami 路径,通过 Persistent Volume Claim 持久化:
storageClass: ""(依赖集群默认 StorageClass)yamlpersistence: enabled: true storageClass: "fast-storage" size: 10Gi accessMode: ReadWriteOnce
添加自定义环境变量:
yamlwordpress: extraEnvVars: - name: LOG_LEVEL value: "error" - name: WP_DEBUG value: "false"
或通过 ConfigMap/Secret 注入:
yamlwordpress: extraEnvVarsCM: custom-env-cm # 从 ConfigMap 注入 extraEnvVarsSecret: custom-env-secret # 从 Secret 注入
添加 Sidecar 容器(如日志收集器):
yamlsidecars: - name: log-exporter image: busybox:1.35 command: ["tail", "-f", "/var/log/wordpress/access.log"] volumeMounts: - name: logs mountPath: /var/log/wordpress
添加 Init 容器(如文件权限配置):
yamlinitContainers: - name: fix-permissions image: busybox:1.35 command: ["chmod", "-R", "755", "/bitnami/wordpress"] volumeMounts: - name: wordpress-data mountPath: /bitnami/wordpress
自定义 Pod 亲和性规则:
yamlaffinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - mariadb topologyKey: "kubernetes.io/hostname"
或使用预设亲和性(来自 bitnami/common):
yamlpodAffinityPreset: soft # 软亲和性 podAntiAffinityPreset: hard # 硬反亲和性 nodeAffinityPreset: type: required key: workload values: ["wordpress"]
自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像仓库,推出Bitnami Secure Images计划,主要变更包括:
latest 标签,用于开发)docker.io/bitnamilegacy(不再更新)latest 标签的硬化镜像docker.io/bitnami 切换至 docker.io/bitnamilegacy更多详情见 Bitnami Secure Images 公告
| 参数名 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 全局镜像拉取密钥(数组) | [] |
global.defaultStorageClass | 持久卷默认 StorageClass | "" |
global.security.allowInsecureImages | 允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 适配 OpenShift restricted-v2 SCC 的安全上下文(移除 runAsUser 等),可选值:auto(自动检测)、force(强制适配)、disabled(禁用) | auto |
| 参数名 | 描述 | 默认值 |
|---|---|---|
kubeVersion | 覆盖 Kubernetes 版本 | "" |
nameOverride | 部分覆盖资源名称模板(保留发布名称) | "" |
fullnameOverride | 完全覆盖资源名称模板 | "" |
commonLabels | 添加到所有资源的标签 | {} |
commonAnnotations | 添加到所有资源的注解 | {} |
clusterDomain | Kubernetes 集群域名 | cluster.local |
extraDeploy | 额外部署的 Kubernetes 对象(数组) | [] |
usePasswordFiles | 以文件而非环境变量挂载凭证 | true |
diagnosticMode.enabled | 启用诊断模式(禁用探针,覆盖命令) | false |
diagnosticMode.command | 诊断模式下的容器命令 | ["sleep"] |
diagnosticMode.args | 诊断模式下的命令参数 | ["infinity"] |
| 参数名 | 描述 | 默认值 |
|---|---|---|
image.registry | WordPress 镜像仓库 | REGISTRY_NAME |
image.repository | WordPress 镜像仓库路径 | REPOSITORY_NAME/wordpress |
image.digest | 镜像摘要(格式:sha256:aa...),设置后将覆盖 tag | "" |
image.pullPolicy | 镜像拉取策略 | IfNotPresent |
image.tag | 镜像标签 | ""(默认使用 Chart 版本) |
多副本维护模式问题:执行需要维护模式的管理操作(如插件更新)时,仅会在一个副本上激活维护模式,其他副本可能继续处理请求导致不可预测结果。
解决方法:通过 WP CLI 在所有副本上手动激活/停用维护模式(假设发布名为 wordpress,3 个副本):
console# 激活维护模式 for i in 0 1 2; do kubectl exec $(kubectl get pods -l app.kubernetes.io/name=wordpress -o jsonpath="{.items[$i].metadata.name}") -c wordpress -- wp maintenance-mode activate done # 停用维护模式 for i in 0 1 2; do kubectl exec $(kubectl get pods -l app.kubernetes.io/name=wordpress -o jsonpath="{.items[$i].metadata.name}") -c wordpress -- wp maintenance-mode deactivate done
完整参数列表请参见 Bitnami WordPress Chart 文档

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429