用Docker-Compose容器化WordPress

671 阅读7分钟

在靠近用户的地方部署容器

本工程教育(EngEd)计划由科支持。

在全球范围内即时部署容器。Section是经济实惠、简单而强大的。

免费开始吧。

用Docker-Compose容器化WordPress

4月12日, 2021

Docker是一个容器管理系统。它用于管理一个有多个组件的应用程序。Docker-compose是由Docker提供的一个工具包。它定义并运行一个多容器的Docker应用程序。

大多数应用程序涉及一个以上的架构组件。在这类应用中,Docker-compose将帮助你按照应用堆栈中的定义运行这些组件。它提供了一个单一的文件,定义了不同的容器如何按照你的应用堆栈的要求相互作用。

一个堆栈应用的好例子是WordPress。WordPress是一个开源的内容管理系统的API。WordPress API被用来创建漂亮的网站、博客或应用程序。它由一个phpMyAdmin、MySQL数据库容器和一个WordPress安装容器组成。

Docker允许我们创建一个简单的YAML 配置文件来捆绑这些WordPress容器(组件)。这些组件将作为一个应用程序进行交互和运行。我们将使用Docker-compose来运行这三个WordPress API容器,以利用WordPress内容管理系统。

通常情况下,设置一个WordPress的安装包括多个步骤。你需要手动设置WordPress环境。这可能是非常麻烦的。此外,你应该建立一个本地Web服务器,配置服务器以执行PHP代码,并设置一个MySQL数据库。

你也可以使用预先建立的软件包,如MacOS的MAMP或Windows的XAMPP和Wamp,在你的本地计算机系统上设置所有WordPress组件。

然而,使用Docker,你只需创建一个文件并运行几个命令。这将在Docker容器内设置一切,你的WordPress将运行良好。这是建立WordPress网站环境的最直接的方法。

目标

本教程将演示如何使用Docker-compose通过Docker命令将WordPress网站Docker化。

前提条件

准备工作

为了开始工作,在你的电脑上安装Docker

在Windows上安装Docker时,你可能会遇到这个错误。

Docker installation error

为了解决这个问题,下载并安装WSL 2 Linux内核。重新启动Docker桌面,错误就会得到解决。

我们将使用Docker Hub中现成的镜像。

这些包括。

  • WordPress- 我们需要一个WordPress镜像来创建一个WordPress网站。WordPress镜像包括我们需要的Apache服务器,以执行PHP代码。
  • MySQL- 这将设置WordPress的环境变量,如MySQL根密码、用户和数据库。
  • phpMyAdmin- 它允许我们查看数据库表和列。

我们现在准备创建一个单一的YAML 文件,它将设置所有这些Docker镜像和容器。

设置YAML文件

首先,在你的计算机首选位置创建一个项目目录。即cd desktop ,然后是你的项目目录mkdir wordpress-docker

将目录改为新创建的目录,即cd wordpress-docker

wordpress-docker 目录内,创建一个.yaml 文件,即:docker-compose.yaml 。运行type nul >> docker-compose.yaml 来创建该文件。如果你是在Linux或Mac上,使用touch docker-compose.yaml

Docker-compose也可以使用.yml

用你喜欢的文本编辑器打开该项目。我使用的是Visual Studio Code。我将继续用code . 来打开它。

设置组合环境

继续在.yaml文件的顶层包含以下一行。

Version: '3'
  • 服务--定义了要运行的容器类型。在这种情况下,它们包括WordPress和MySQL。
services:

在服务块中添加容器,如下图所示。

services:

  #MySQL Database image
  mysql_db:

  #Wordpress image based on Apache
  wordpress:
  1. 数据库
  • 容器名称。这将是你想给数据库容器的名字。
container_name: database_container
  • 重启模式。如果容器因任何原因停止运行,将其设置为重启。如果服务器重新启动,容器也会重新启动。
restart: always
  • 容器图像。要运行MySQL数据库,你需要一个MySQLDocker中心提供的MySQL镜像。确保包括最新版本的容器镜像。

设置这个镜像,如下图所示。

image: mysql
  • MySQL环境。数据库环境由数据库名称和密码以及数据库用户名和密码组成。WordPress将使用这些环境变量来连接到MySQL容器。
environment:
    MYSQL_ROOT_PASSWORD: my_password_1234789
    MYSQL_DATABASE: my_wp_database
    MYSQL_USER: my_wp_user
    MYSQL_PASSWORD: my_wp_user_password
  • 定义容器卷。这将把MySQL容器的数据映射到你创建的卷上。
volumes:
  - mysql:/var/lib/mysql
  1. WordPress

现在,让我们来定义WordPress的服务。

  • Depend on.它确保一个容器只有在它所依赖的服务在线时才启动。WordPress依赖于MySQL容器,因此,指定depend_on ,如下所示。
depends_on:
  - my_database

这个名字应该等于MySQL容器中定义的数据库服务的名字。

image: WordPress:latest

始终包括注释latest ,以便WordPress加载在最新的可用版本上。

  • 像往常一样定义重启策略。
restart: always
  • 设置WordPress容器的端口。WordPress镜像是基于Apache的,你需要设置Apache运行的端口。默认情况下,Apache运行在端口80 。定义这个端口以将容器映射到本地机器上。将默认的apache端口映射到本地计算机的port 8000
ports:
  - "8000:80"
  • WordPress环境变量。为了使WordPress容器能够运行,你应该设置WordPress将利用的数据库环境。这些变量包括WordPress数据库主机、WordPress数据库用户名、数据库用户密码,以及在MySQL容器环境中定义的数据库名称。
environment:
    WORDPRESS_DB_HOST: my_database:3306
    WORDPRESS_DB_USER: my_wp_user
    WORDPRESS_DB_PASSWORD: my_wp_user_password
    WORDPRESS_DB_NAME: my_wp_database
  • 设置这些WordPress卷。它们将当前目录映射到包含WordPress文件的目录。
volumes:
  ["./:/var/www/html"]
  1. 创建一个顶层卷,将定义MySQL,如mysql:/var/lib/mysql
volumes:
  mysql: {}

完整的YAML文件

version: "3"
services:
  #MySQL Database image
  my_database:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: my_password_1234789
      MYSQL_DATABASE: my_wp_database
      MYSQL_USER: my_wp_user
      MYSQL_PASSWORD: my_wp_user_password
    volumes:
      - mysql:/var/lib/mysql

  #WordPress image based on Apache
  wordpress:
    depends_on:
      - my_database
    image: wordpress:latest
    restart: always
    ports:
      - "8000:80"
    environment:
      WORDPRESS_DB_HOST: my_database:3306
      WORDPRESS_DB_USER: my_wp_user
      WORDPRESS_DB_PASSWORD: my_wp_user_password
      WORDPRESS_DB_NAME: my_wp_database
    volumes:
      ["./:/var/www/html"]
volumes:
  mysql: {}

测试

YAML文件已经准备好初始化定义的Docker容器。运行下面的命令来设置这个容器。

docker-compose up -d

确保你是在YAML文件所在的目录中运行上述命令。

这将下载WordPress所需的所有环境。如果你看一下你的目录,你会发现有一些新的文件和文件夹。这些是根据docker-compose.yaml 中设定的准则下载的WordPress文件。

Wordpress files

为了确认WordPress网站是否工作,在浏览器中打开http://localhost:8000/ 。这将启动正常的WordPress向导。

Wordpress installation wizard

点击继续并提供wp-admin 信息并安装WordPress。

WordPress wp-admin config information

用你提供的信息登录,这将启动WordPress的后端。

WordPress wp-admin backend

然后你就完成了。你已经将一个WordPress网站docker化了。

运行docker-compose down ,削减两个容器。

设置PHPMyAdmin

由于我们使用的是Mysql,我们可以添加phpMyAdmin服务来访问和查看数据库。

继续,在你的YAML文件中包括以下phpMyAdmin服务和它的环境。

phpmyadmin:
    depends_on:
      - my_database
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - '8080:80'
    environment:
      PMA_HOST: my_database
      MYSQL_ROOT_PASSWORD: my_password_1234789

运行docker-compose up -d ,打开http://localhost:8000/ ,查看网站。

导航到http://localhost:8080/ ,查看phpMyAdmin。输入你的认证细节,你就可以查看并与MySQL数据库进行交互。

wordpress PHPMyAdmin

总结

我们现在已经建立并运行了WordPress。这是一个更容易设置WordPress API的方法。此外,在向公众发布WordPress之前,你可以用这种方法来进行WordPress测试。

编码愉快

进一步学习


同行评审的贡献者。万亚-迈克