如何使用Podman安装并配置WordPress开发环境?
适配Ubuntu 20.04 + Podman 3.4.2的WordPress环境搭建方案
问题背景
此前无需Docker知识即可通过docker-compose跨平台运行WordPress,但在Ubuntu 20.04(Podman 3.4.2)环境下尝试三种方案均失败:
- 用docker-compose配合Podman后端运行官方yml,出现「重复挂载目标」错误,且该系统无法使用Podman 4.1.0才支持的podman-compose
- RedHat官方示例出现「无法连接MySQL服务器」错误,修正疑似笔误后仍无效
- 修改CentOS适配的Pod脚本后,容器运行正常,但WordPress无法连接数据库
可行解决方案
修正后的Pod启动脚本
针对原脚本的问题(目录创建错误、数据库启动时序不匹配、权限/路径问题),以下是可直接运行的修正版本:
#!/bin/bash # 配置环境变量 DB_NAME='wordpress_db' DB_PASS='mysupersecurepass' DB_USER='justbeauniqueuser' POD_NAME='wordpress_with_mariadb' CONTAINER_NAME_DB='wordpress_db' CONTAINER_NAME_WP='wordpress' # 创建数据目录(小写-p为标准写法,确保父目录不存在时自动创建) mkdir -p "$PWD/html" mkdir -p "$PWD/database" # 清理旧的Pod和容器 podman pod rm -f "$POD_NAME" # 拉取所需镜像 podman pull mariadb:latest podman pull wordpress # 创建共享网络的Pod podman pod create -n "$POD_NAME" -p 80:80 # 启动MariaDB容器 podman run --detach --pod "$POD_NAME" \ -e MYSQL_ROOT_PASSWORD="$DB_PASS" \ -e MYSQL_PASSWORD="$DB_PASS" \ -e MYSQL_DATABASE="$DB_NAME" \ -e MYSQL_USER="$DB_USER" \ --name "$CONTAINER_NAME_DB" \ -v "$PWD/database":/var/lib/mysql:Z \ docker.io/mariadb:latest # 等待数据库初始化完成(关键:给MariaDB足够启动时间) echo "等待数据库初始化..." sleep 10 # 启动WordPress容器 podman run --detach --pod "$POD_NAME" \ -e WORDPRESS_DB_HOST=127.0.0.1:3306 \ -e WORDPRESS_DB_NAME="$DB_NAME" \ -e WORDPRESS_DB_USER="$DB_USER" \ -e WORDPRESS_DB_PASSWORD="$DB_PASS" \ --name "$CONTAINER_NAME_WP" \ -v "$PWD/html":/var/www/html:Z \ docker.io/wordpress
关键修正说明
- 目录创建参数:将
mkdir -P改为标准的mkdir -p,避免部分系统不识别大写参数导致目录创建失败 - 启动时序控制:添加
sleep 10等待MariaDB完成初始化,解决WordPress因提前启动无法连接数据库的问题 - 权限兼容处理:挂载目录时添加
:Z标记,适配Ubuntu下的安全上下文限制(无SELinux的系统可忽略,不影响功能) - 路径准确性:明确使用
$PWD指定挂载路径,避免sudo执行时路径指向root目录的问题(若需用sudo,确保执行脚本时的工作目录正确)
约束条件
- 仅适配Ubuntu 20.04 + Podman 3.4.2,更高版本Podman可直接使用官方podman-compose方案
- 当前用户需加入
podman用户组(执行sudo usermod -aG podman $USER后重新登录),无需sudo即可操作Podman - 宿主机80端口未被其他服务占用,若占用需修改Pod端口映射(如
-p 8080:80) - 首次启动时,MariaDB初始化时间可能因宿主机性能波动,可根据实际情况调整
sleep时长
内容的提问来源于stack exchange,提问作者Paul Smith
相关产品推荐
相关产品推荐

