visay/dockerwordpress

Docker Compose 结构,用于快速启动 WordPress 项目

安装: 356

依赖项: 0

建议者: 0

安全性: 0

星星: 2

关注者: 3

分支: 2

开放性问题: 0

语言:Shell

1.1.1 2018-06-12 10:13 UTC

This package is not auto-updated.

Last update: 2024-09-13 11:42:31 UTC


README

DockerWordpress 创建必要的 Docker 容器(web 服务器、数据库、PHP、邮件、Redis、Elasticsearch、CouchDB)来运行您的 WordPress 项目。该软件包提供了一个包装脚本在 vendor/bin/dockerwordpress,简化了 Docker 的处理,并完成了所有必要的配置。

我们创建此软件包是为了使 WordPress 项目的开发更加容易,并创建一个简单可重用的软件包,它可以很容易地维护,并为标准项目提供服务。

由于软件包已在几个项目中使用,因此将继续开发。欢迎贡献和反馈。

安装 Docker

https://docs.dockerd.com.cn/installation/ (tested with docker v17.03)

安装 docker-compose

我们使用 docker-compose 进行所有自动配置

https://docs.dockerd.com.cn/compose/install/ (tested with docker-compose v1.12)

仓库包含一个 Dockerfile,它将在每次更改后自动构建在 Docker Hub 上,并由 docker-compose 用于构建必要的容器。

将 dockerwordpress 安装到您的发行版中

visay/dockerwordpress 添加为 composer 中的开发依赖项。

示例:

composer require --dev visay/dockerwordpress dev-master

注意:

DockerWordpress 使用端口 80 进行 Web 访问,因此请确保您的宿主机器没有使用该端口的任何软件。通常这发生在您的宿主机器中安装了 Apache 或 Nginx 的情况下,因此您可以停止它,使用以下命令:

sudo service apache2 stop
sudo service nginx stop

运行 dockerwordpress

vendor/bin/dockerwordpress up -d

该命令将输出可以访问您的项目的 URL。将主机名添加到 /etc/hosts 中,并将 IP 设置为您的 Docker 宿主(Linux 的默认值为 0.0.0.0)。您还可以使用任何子域名(如 *.hostname)并使其指向同一服务器。您需要做的是将精确的子域名添加到您的 /etc/hosts 中。参数 -d 将使其在后台运行,直到您运行

vendor/bin/dockerwordpress stop

您的 wp-config.php 的默认数据库配置为:

<?php

## Database connection
define('DB_NAME', 'dockerwordpress');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'db');

请注意,还有一个用于测试上下文的第二个数据库 dockerwordpress_test。测试上下文 URL 为 test.hostname,并且该主机名也应添加到您的 /etc/hosts 中。

检查状态

vendor/bin/dockerwordpress ps

这将显示正在运行的容器。数据容器可以不活动以执行其工作。

技巧与窍门

从您的宿主到容器的远程调试配置

DockerWordpress 默认安装了以下配置的 xdebug

xdebug.remote_enable = On
xdebug.remote_host = 'dockerhost'
xdebug.remote_port = '9001'
xdebug.max_nesting_level = 500

因此,您可以通过端口 9001 从您的宿主到容器进行远程调试。从您的 IDE 中,您需要相应地配置端口。

在服务容器中运行 shell

vendor/bin/dockerwordpress run SERVICE /bin/bash

SERVICE 可以当前是 appwebdatadbrediselasticsearchcouchdb

app 容器中访问项目 URL

由于当前 Docker 不支持双向链接,您无法从 app 容器访问 Web 容器。但在某些情况下,您可能需要此连接。例如,在没有 selenium 的 behat 测试中,您需要在 Testing 上下文中运行测试时,需要在 app 容器中获取您网站的 URL。

DockerWordpress 在启动所有容器后添加了额外的脚本以获取 Web 容器的 IP 地址并将其添加到 app 容器中的 /etc/hosts 中,如下所示

WEB_CONTAINER_IP    project-url
WEB_CONTAINER_IP    test.project-url

您需要在您的behat.yml中定义默认测试套件URL,以便使用http://test.project-url,然后您可以运行behat测试而无需连接外部selenium服务器

vendor/bin/dockerwordpress run app vendor/bin/behat -c Path/To/Your/Package/Tests/Behaviour/behat.yml

从Docker主机访问容器内的数据库

虽然您可以通过vendor/bin/dockerwordpress run db /bin/bash轻松登录到db容器的shell中并执行MySQL命令,但在某些情况下,您可能希望直接从主机运行mysql命令而无需先登录到db容器。其中一个最佳用例,例如,是从MySQL Workbench工具访问容器内的数据库。为了能够做到这一点,我们已经将容器内的数据库端口(即3306)通过3307端口映射到您的宿主机。

Screenshot of MySQL Workbench interface

访问CouchDB

从您的宿主机,您可以通过Web界面或命令行访问couchdb

Web: http://0.0.0.0:5984/_utils/

Cli: curl -X GET http://0.0.0.0:5984/_all_dbs

从您的app容器内部,您也可以通过命令行访问couchdb

vendor/bin/dockerwordpress run app /bin/bash
curl -X GET http://couchdb:5984/_all_dbs

连接到正在运行的服务

运行vendor/bin/dockerwordpress ps并复制您想要连接到的容器的名称。

运行带有您刚才复制的名称的docker exec -it <containername> /bin/bash。这样,您可以在运行中的容器中工作,而不是创建一个新的容器。

检查容器中的开放端口

vendor/bin/dockerwordpress run SERVICE netstat --listen

包含Wordpress CLI

从v1.0.1版本起,我们支持WordPress CLI。WordPress CLI的安装必须在您的composer级别上完成。您的WordPress composer应如下所示

	"require": {
		"wp-cli/wp-cli" : "~1.1"
	},

要执行WordPress CLI命令,首先需要访问App容器

vendor/bin/dockerwordpress run app /bin/bash
# check the WP CLI
wp --info

关于Worpress CLI的更多详细信息

进一步阅读