本文介绍了基于 Docker 在本地环境部署 WordPress 的方法,这种方法具有可移植性强、不污染主机环境、便于版本管理等优势。

安装 Docker 和 Docker Compose

Docker Compose 是一个用于定义和管理多个 Docker 容器的工具。它允许您使用简单的 YAML 文件来描述应用程序的组件、服务和它们之间的依赖关系,并通过一条命令将它们一起启动、停止和管理。

Windows 和 Mac 版的 Docker Desktop 已经自带了 Docker Compose。

创建项目

创建项目文件夹:在任意位置创建一个新文件夹,例如 LocalWordPress

创建 Docker Compose 文件:创建 docker-compose.yml 文件,并将以下内容复制到该文件中:

version: '3'
services:
  db:
    image: mysql:8.0
    volumes:
      - ./mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - db
    image: wordpress:6.2.2
    ports:
      - '8000:80'
    volumes:
      - ./wordpress:/var/www/html
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress

下面逐行解析这个文件。

version: '3'
services:

version: '3' 是 Docker Compose 文件的版本;services: 下定义了将要创建的服务列表。在此例中,有两个服务:dbwordpress,这两个服务将根据其中的配置再拉取镜像创建容器。

  db:
    image: mysql:8.0
    volumes:
      - ./mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

在服务 db 中:

  • image: mysql:8.0 制定了 MySQL 版本(也可以写成 latest,表示使用最新版本,但建议指定一个确定的版本使得每次构建一致);
  • volumes 及后面一行表示将主机文件夹(LocalWordPress)中的 db_data 目录挂载到容器的 /var/lib/mysql 目录,以持久化保存 MySQL 数据;
  • restart: always 指定容器应在退出后始终重新启动;
  • environment 一项设置了创建 MySQL 数据库时所需的环境变量,如 MySQL 的 root 密码、数据库名、用户名和密码等。
  wordpress:
    depends_on:
      - db
    image: wordpress:6.2.2
    ports:
      - '8000:80'
    volumes:
      - ./wordpress:/var/www/html
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress

在服务 wordpress 中:

  • depends_on 指定该服务依赖于 db 服务;
  • image 指定了 WordPress 的镜像版本;
  • ports 以及 8000:80 表示将主机(宿主机)的 8000 端口映射到容器的 80 端口(80 端口是用来访问网页的,但是不能占用主机的 80 端口,因此需要另外给一个主机端口来映射);
  • volumes 及后面一行表示将主机文件夹(LocalWordPress)中的 wordpress 目录挂载到容器的 /var/www/html 目录,以持久化保存网站数据;
  • restart: always 指定容器应在退出后始终重新启动;
  • environment 一项中,db:3306 表示使用名为 db 的容器作为数据库主机,并连接到该容器的 3306 端口(MySQL 默认端口);后面则是设置 WordPress 连接数据库时使用的用户名和密码。

启动容器

请先确保已启动 Docker。

启动容器:在项目文件夹目录的终端中执行以下命令以启动容器:

docker-compose up -d

该命令会下载所需的镜像并启动WordPress容器。这将启动 Docker Compose 文件中定义的所有服务,并将它们放在后台运行。-d 参数指定服务应该以“守护进程”模式运行,也就是在后台运行。

若要停止这些服务,可以在同一目录下运行以下命令:

docker-compose down

这将关闭并删除 Docker Compose 文件中定义的所有服务和相关容器。

也可以在 Docker Desktop 中操作。

安装 WordPress

完成上述步骤后,可以通过访问 http://localhost 来打开 WordPress 安装向导。按照提示完成安装过程,并设置所需的用户名、密码和站点信息。然后就可以正常使用了。