问题描述
我想为 wordpress 创建一个 docker 镜像,它创建了一个随时可用的 wp 实例,已经设置并完成安装,激活主题和插件以及其他配置。 我正在探索 WP CLI 作为 Dockerfile 构建的一部分来执行此操作,但结果证明这是一个有状态的过程(它需要现有的 MysqL 数据库已经就位),这在 docker 构建期间是不可能的。
我正在考虑创建一个 bash 脚本,该脚本会启动一个 docker WP CLI 容器和一个纯 ubuntu/PHP 容器。然后 wp cli 容器将在 ubuntu/PHP 容器上安装和设置 wp 实例,该容器将成为事实上的 WP 容器,最后 wp cli 容器将被脚本关闭。
我不确定这是否是一个好的解决方案,您对此用例有更好的建议吗?
解决方法
这是一个广泛且基于意见的问题。我认为你基本上需要弄清楚三件事:
- 查找并选择一个 Composer 模板来管理您的依赖项。例如https://roots.io/bedrock/。
- WP-CLI 命令。我看你已经开始了。
- 找到一种导出和导入 WordPress 配置的方法。例如https://wordpress.org/plugins/wp-cfm/
一个基本的设置程序可能看起来像这样:
# Download WordPress core and plugins.
composer install -n --no-dev
# Default DB name and user.
wp config create --dbname="test" --dbuser="root" --dbpass="" --dbhost="127.0.0.1"
# Install a basic site. The title doesn't matter.
wp core install --url="blog.localhost" --title="Lorem ipsum dolor sit amet" --admin_user="admin" --admin_password="admin" --admin_email="webmaster@example.com" --skip-email
# Language.
wp language core install de_DE
# Activate WP-CFM and import default conf.
wp plugin activate wp-cfm
wp config pull default
您不一定需要 Composer。您也可以仅使用 WP-CLI 下载 WordPress 和插件。 Composer 的优点是版本控制,你只需要一个 composer.json 和 -.lock 文件来保持你的 repo 干净。只需一个命令 composer install
即可为您和您的同事下载所有内容。大的优势还在于 vendor/
可以在构建期间缓存,例如取决于 composer.lock 校验和。这可以大大缩短构建时间。
作为上述示例例程的替代方案,您还可以尝试导入现有数据库备份,然后只更新基本 URL 并导入更新后的配置。这将跳过 WordPress 安装步骤,并为您提供可能针对自动化测试的虚拟内容。