Docker - WordPress 设置



WordPress是一个著名的开源CMS,用于开发网站和博客。在不同的环境中部署WordPress需要处理各种依赖项,例如Web服务器、MySQL、PHP等等。使用Docker可以简化此过程,它提供了一种标准化的方法来管理WordPress可以运行的环境。

Docker化WordPress的先决条件

在Docker化WordPress之前,请确保您拥有以下内容:

  • Docker基础知识 - 了解Dockerfile、容器和镜像将使您更容易地浏览本指南。
  • WordPress基础 - 建议您了解MySQL数据库的基础知识,以便理解WordPress的通信方式。
  • 已安装Docker - 确保Docker已安装并在您的系统上运行。您可以直接从Docker官方网站安装它。
  • 文本编辑器 - 可用于编辑文件的文本编辑器示例包括Notepad++、VSCode和Sublime Text。
  • 命令行界面(CLI) - 您需要能够轻松地使用命令行界面执行命令。

使用Dockerfile Docker化WordPress

让我们使用官方的WordPress镜像,它是生产就绪的。如有必要,您可以修改默认的WordPress镜像进行自定义。

这是一个自定义WordPress文件的简单Dockerfile示例

FROM wordpress:latest

# Copy custom themes or plugins if necessary
COPY ./themes /var/www/html/wp-content/themes

# Expose port 80
EXPOSE 80

它添加了自定义主题或插件,并为WordPress服务公开了80端口。

创建WordPress Docker镜像

创建自定义Dockerfile后,我们可以使用以下命令构建镜像:

$ docker build -t custom-wordpress .

这将创建一个名为custom-wordpress的Docker镜像。

Creating WordPress Docker Image

运行WordPress Docker容器

创建Docker镜像后,我们可以使用以下命令运行与该镜像关联的容器:

$ docker run -d -p 8000:80 --name my-wordpress custom-wordpress
Running WordPress Docker Container 1

您可以访问https://127.0.0.1:8000来访问WordPress仪表盘。

Running WordPress Docker Container 2

在Docker Compose上运行WordPress

让我们使用Docker Compose进行WordPress的多容器部署。

步骤1:创建一个项目目录

为了保持一切井然有序,首先为您的WordPress项目创建一个目录。所有Docker组件和配置文件都将存储在此处。

$ mkdir wordpress-docker
$ cd wordpress-docker

步骤2:创建一个Docker Compose文件

为了指定WordPress运行所需的各项服务,我们可以使用Docker Compose。让我们在项目目录中创建一个docker-compose.yml文件。

$ touch docker-compose.yml

在您的文本编辑器中打开此文件,并添加以下配置:

version: "3.8"

services:
   db:
      image: mysql:5.7
      volumes:
         - db_data:/var/lib/mysql
      restart: always
      environment:
         MYSQL_ROOT_PASSWORD: rootpassword
         MYSQL_DATABASE: wordpress
         MYSQL_USER: wpuser
         MYSQL_PASSWORD: wppassword

   wordpress:
      depends_on:
         - db
      image: wordpress:latest
      ports:
         - "8000:80"
      restart: always
      environment:
         WORDPRESS_DB_HOST: db:3306
         WORDPRESS_DB_USER: wpuser
         WORDPRESS_DB_PASSWORD: wppassword
         WORDPRESS_DB_NAME: wordpress
      volumes:
         - ./wp-content:/var/www/html/wp-content

volumes:
   db_data:

此配置定义了两项服务:

  • WordPress - 主要WordPress程序在8000端口运行,并使用最新的镜像。
  • MySQL - WordPress的数据库,包含预先配置的登录信息。

步骤3:启动Docker Compose服务

让我们通过使用Docker Compose运行WordPress和MySQL来测试设置。在您的项目目录中,运行以下命令来启动WordPress和MySQL:

$ docker-compose up -d
Launch Docker Compose Services

步骤4:进入WordPress仪表盘

服务启动并运行后,您可以打开浏览器并访问WordPress安装。

https://127.0.0.1:8000
Go to WordPress Dashboard

现在应该可以看到WordPress安装页面,您可以继续设置您的网站。

使用Docker设置HTTPS

您可以使用Let's Encrypt通过HTTPS保护您的WordPress网站,这是提供数据安全功能的标准程序。Let's Encrypt提供免费的SSL证书,并且使用Docker可以轻松地自动化此过程。

步骤1 - 将Nginx作为反向代理添加到docker-compose.yml文件中。

步骤2 - 将Let's Encrypt工具Certbot放入Nginx容器中。

步骤3 - 修改nginx.conf文件以添加SSL指令,以便为SSL配置Nginx。

步骤4 - 使用Certbot命令自动请求SSL证书

$ certbot --nginx -d yourdomain.com

步骤5 - 使用cron设置Let's Encrypt证书自动续订。

使用Docker自动备份WordPress

WordPress需要备份,尤其是对于文件和数据库系统。可以使用Docker卷和cron作业来自动化此备份过程。

步骤1 - 创建一个备份脚本文件,该文件使用mysqldump备份数据库。

步骤2 - 在Dockerfile中安装cron以自动运行备份脚本。

步骤3 - 挂载保存备份的卷,并在docker-compose.yml中添加备份服务。

步骤4 - 要定期运行备份,请使用此命令

$ crontab -e

步骤5 - 使用cron作业计划备份时间表(例如:每周或每月)。

将Docker和WordPress与自定义域名一起使用

为了使WordPress Docker与自定义域名(例如www.abc.com)一起使用,必须正确设置DNS和域名配置。

步骤1 - 购买域名并将DNS设置配置为指向您的服务器IP地址。

步骤2 - 为服务器中使用的Nginx反向代理设置域名,在server_name指令中使用。

步骤3 - 配置wp-config.php文件中的WordPress设置以启用自定义域名。

define('WP_HOME', 'https://abc.com');
define('WP_SITEURL', 'https://abc.com');

步骤4 - 使用此命令重新启动Docker服务:

$ docker-compose restart

步骤5 - 确保域名正确指向您的WordPress网站。

在Docker中为WordPress添加多个数据库

某些复杂的WordPress设置可能需要多个数据库,以提高系统的组织性或性能。使用Docker,您可以设置多个MySQL数据库。

步骤1 - 要定义多个MySQL数据库服务,请编辑docker-compose.yml文件。

步骤2 - 为每个数据库分配唯一的凭据,并挂载唯一的卷以确保数据的持久性。

步骤3 - 通过更新wp-config.php文件来整合对多个数据库设置的更改:

define('DB_HOST', 'db1');
define('DB_NAME', 'exampledb1');

步骤4 - 可以使用单独的子域名或新的路径访问每个WordPress安装。

结论

在本章中,我们讨论了如何使用Docker和Docker Compose成功地容器化WordPress。此设置为WordPress应用程序在开发和生产服务器上运行提供了一致的环境。它也易于扩展。

关于Docker化WordPress的常见问题

在本节中,我们收集了一组关于Docker化WordPress的常见问题及其答案。

1. 如何在Docker容器中设置WordPress网站?

您可以使用WordPress基础镜像在Docker容器中设置WordPress网站。这包括WordPress和所需的依赖项(例如,Apache、MySQL)。

您可以使用配置文件在容器中配置WordPress。您必须在运行容器之前公开必要的端口。

2. 如何处理Docker容器中WordPress的数据持久性?

您可以使用卷来持久化WordPress数据。这包括数据库数据、上传文件和其他站点内容。您可以将卷挂载到容器内的目录,并配置WordPress以使用这些卷。请确保有适当的数据备份和恢复程序。

3. 如何在Docker容器中为WordPress配置HTTPS?

要为WordPress配置HTTPS,请获取SSL/TLS证书并将其安装在您的Web服务器(例如,Apache)上。配置WordPress以使用该证书并将HTTP流量重定向到HTTPS。考虑使用Let's Encrypt之类的工具进行自动证书管理。

广告