在靠近用户的地方部署容器
本工程教育(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来实现应用程序的容器化。对Docker的预先了解是必不可少的。
- 关于如何创建Docker镜像和启动Docker容器的基本知识。
- 关于如何安装和使用WordPress的基本知识。
准备工作
为了开始工作,在你的电脑上安装Docker。
在Windows上安装Docker时,你可能会遇到这个错误。

为了解决这个问题,下载并安装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文件中首先要定义的是要使用的compose文件的版本。这应该是Docker-compose的最新版本。
继续在.yaml文件的顶层包含以下一行。
Version: '3'
- 服务--定义了要运行的容器类型。在这种情况下,它们包括WordPress和MySQL。
services:
在服务块中添加容器,如下图所示。
services:
#MySQL Database image
mysql_db:
#Wordpress image based on Apache
wordpress:
- 数据库
- 容器名称。这将是你想给数据库容器的名字。
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
- WordPress
现在,让我们来定义WordPress的服务。
Depend on.它确保一个容器只有在它所依赖的服务在线时才启动。WordPress依赖于MySQL容器,因此,指定depend_on,如下所示。
depends_on:
- my_database
这个名字应该等于MySQL容器中定义的数据库服务的名字。
- 定义WordPress的图像。
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"]
- 创建一个顶层卷,将定义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网站是否工作,在浏览器中打开http://localhost:8000/ 。这将启动正常的WordPress向导。

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

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

然后你就完成了。你已经将一个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。这是一个更容易设置WordPress API的方法。此外,在向公众发布WordPress之前,你可以用这种方法来进行WordPress测试。
编码愉快
进一步学习
- 开始使用Docker
- 了解Docker的概念
- 如何创建Django Docker镜像
- 如何创建Spring Boot Docker镜像
- 使用Docker构建一个Node.js应用程序
- 调试在Docker中运行的Node.js应用
- 分解Kubernetes与Docker Swarm的关系
同行评审的贡献者。万亚-迈克