WordPress 是全球最流行的博客和内容管理平台。它功能强大且简单易用,从学生到跨国公司,都使用它来构建美观、实用的网站。
Bitnami WordPress Helm Chart 用于在 Kubernetes 集群上通过 Helm 包管理器引导 WordPress 部署。该 Chart 还集成了 Bitnami MariaDB Chart(满足 WordPress 的数据库需求)和 Bitnami Memcached Chart(用于缓存数据库查询)。
WordPress 官方概述
.htaccess 配置快速安装(TL;DR)
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 -
Prometheus 指标集成
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跳过安装向导
Memcached 配置
启用内置 Memcached
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/wordpress \ --set wordpressConfigureCache=true \ --set memcached.enabled=true
对接外部 Memcached
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=11211
Ingress 配置
启用 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 控制器(如 https://github.com/bitnami/charts/tree/main/bitnami/nginx-ingress-controller%EF%BC%89
TLS 安全配置
支持多种 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-----
.htaccess 文件管理
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 和 Init 容器
添加 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 亲和性配置
自定义 Pod 亲和性规则:
yamlaffinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app.kubernetes.io/name operator: In values: - mariadb topologyKey: "kubernetes.io/hostname"
或使用预设亲和性(来自 https://github.com/bitnami/charts/tree/main/bitnami/common#affinities%EF%BC%89%EF%BC%9A
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更多详情见 https://github.com/bitnami/containers/issues/83267
| 参数名 | 描述 | 默认值 |
|---|---|---|
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
完整参数列表请参见 https://github.com/bitnami/charts/blob/main/bitnami/wordpress/README.md
以下是 bitnamicharts/wordpress 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务