目录
>没有-d选项,它不会在后台运行,而是会向您显示容器正在输出的所有内容(就像Docker logs [Container_Name]一样)。从输出中,您可以看到它已将IP自动分配给该容器。就我而言,是172.17.0.35。如果您使用浏览器访问此地址,则会遇到禁止错误。这是为什么?这是因为/var/www/html文件夹中没有什么(在容器文件系统上),它是空的。
最终调整
>如何缩放在Docker容器中运行的WordPress站点?提供了一些用于扩展应用程序的工具。您可以使用Docker组合来定义和运行多容器应用程序,并通过增加容器实例的数量来扩展它们。您还可以使用Docker Swarm或Kubernetes,它们是可以在多个主机上管理和扩展容器的编排工具。
首页 CMS教程 &#&按 如何为WordPress手动构建Docker容器

如何为WordPress手动构建Docker容器

Feb 17, 2025 pm 01:03 PM

如何为WordPress手动构建Docker容器

>在我的上一篇文章中,我们介绍了什么是docker以及如何使用几个命令启动和运行。但是,我们还没有做任何有用的事情。有很多方法可以使用Docker获得WordPress环境,在本文中,我将向您展示如何手动设置Docker容器与WordPress一起使用。如果您想快速介绍Docker,可以跳回这里的第一篇文章。

钥匙要点

可以手动设置Docker,通过为MySQL和WordPress创建容器来与WordPress一起工作。 MySQL容器是使用Docker Hub的MySQL映像创建的,而WordPress容器是由PHP映像构建的。
    > MySQL容器需要首次创建时通过环境变量,为根用户设置密码。还可以将其他环境变量传递给容器,例如mysql_database,以确保创建带有该名称的数据库。 WordPress容器的PHP映像默认情况下没有安装的MySQL扩展名。可以通过通过使用PHP:5.6-apache image的Dockerfile构建容器来解决这一问题,安装mysqli扩展名并执行Apache2-Foreground。
  • > WordPress容器需要与MySQL容器链接到数据库以进行功能。这是通过运行WordPress容器时使用–link参数的,将MySQL容器的名称作为第一部分,而别名作为第二部分。
  • 设置mySQL
  • >每个WordPress安装都需要一个MySQL数据库。为此,我们前往Docker Hub并找到MySQL图像。
  • docker团队已经准备好了MySQL映像供我们使用。在终端上运行任何命令之前,请确保读取此图像的文档。写作时的最新版本为5.7。但是,最新的标签名称为5.6。图像的最新版本可以适用于任何以前的版本,但一个处于稳定状态。
  • 使用此图像设置容器的基本命令是:
  • >

>如果您还没有本地图像的副本,Docker将从Docker Hub中将其拉动。到目前为止,我们知道 - 名称给我们的容器一个名称,-d确保我们的容器在后台运行。

>

如果您运行Docker PS,您将看到WordPressDB容器未运行。它应该运行。运行Docker登录WordPressDB,您将看到这样的消息:

>
docker run --name wordpressdb -d mysql:5.7
登录后复制
登录后复制
登录后复制
登录后复制

为什么?这是因为当我们第一次构建容器时,我们没有将root密码作为参数。因此,让我们这样做。首先,我们需要使用Docker RM WordPressDB删除使用名称WordPressDB创建的容器。这是因为新容器将使用相同的名称,并且不能有两个具有相同名称的容器。

>让我们再次创建我们的容器。首次创建容器时,我们需要传递环境变量。它应该看起来像这样:

error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
登录后复制
登录后复制
登录后复制
> -e mysql_root_password =密码是环境变量。当从图像构建容器时,它读取此变量并将根用户的密码设置为指定的值,在这种情况下,该值是密码。

如果您现在检查Docker记录WordPressDB,则会看到一条很长的消息,但不用担心,它可以正常工作。同样,运行Docker PS,您会看到一个具有活性和运行的名称WordPressDB的容器。

>

>您也可以将其他环境变量传递给容器,您可以在MySQL映像文档上找到完整的列表。这是另一个示例:

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
登录后复制
登录后复制
登录后复制
>如果您尝试使用名称WordPressDB删除上一个容器,则可能会失败。那是因为容器仍在后台运行。您可以首先停止运行的容器,然后将其卸下或强制将其删除:

如果我们使用MySQL_DATABASE,则确保创建了具有该名称的数据库。这样,我们确定数据库和根密码的名称是什么。您还可以使用密码和数据库创建另一个用户。这是对您的快速测试,请查看他们的文档并尝试自己执行此操作。
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
登录后复制
登录后复制
登录后复制
>

如果您想了解更多该容器的构建方式,请查看Dockerfile。它使用Debian Wheezy,并使用bash命令构建容器。它从存储库中拉出,然后启动mysqld。当您的容器从此图像中

building

时,它首次执行构建文件的命令。当使用>使用容器时,它将仅执行mysqld。 >现在我们拥有一个运行的mySQL容器,我们可以运行一个运行WordPress的容器。

构建WordPress容器如何为WordPress手动构建Docker容器 对于此容器,我们将使用PHP图像。 PHP图像有三种类型,我们只需要Apache随附的PHP图像。

>

>没有-d选项,它不会在后台运行,而是会向您显示容器正在输出的所有内容(就像Docker logs [Container_Name]一样)。从输出中,您可以看到它已将IP自动分配给该容器。就我而言,是172.17.0.35。如果您使用浏览器访问此地址,则会遇到禁止错误。这是为什么?这是因为/var/www/html文件夹中没有什么(在容器文件系统上),它是空的。

>

那么,我们如何将文件放入该文件夹中?默认情况下,该文件夹停留在容器中,并且是看不见的。但是,不要长时间(别忘了docker rm wordpress)。首先,创建一个文件夹并在其中导航(别忘了删除旧的WordPress容器)。

-v用于映射两个文件夹。第一部分是OS上的文件夹,第二部分是容器文件系统中的文件夹。在类似Unix的系统上,“ $ PWD”返回命令运行时终端的位置。当您第一次启动终端时,您将进入主目录。 Windows上的等效物是CD。有关PWD的更多信息。
docker run --name wordpressdb -d mysql:5.7
登录后复制
登录后复制
登录后复制
登录后复制
> 因此,在我们的示例中,第一部分是“ $ pwd/”,它是本地目录,第二部分是/var/www/html/。 -v都需要两者都是完整的路径。但是,如果我们查看工作目录,我们可以看到那里不存在文件。创建一个称为index.php的文件,其中包含以下内容:

>

>在您的浏览器中再次检查。这次,您会注意到IP地址已更改,因为我们创建了一个新的容器。每当我们创建一个新容器时,都会更改其IP。如果您在浏览器中看到该消息,那么您已经完成了所有操作。

>
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
登录后复制
登录后复制
登录后复制
>让我们看看如果将WordPress文件放在那里,会发生什么。使用Docker Stop WordPress停止容器。从WordPress.org获取WordPress的最新副本,然后将文件放入项目文件夹中。使用Docker Start WordPress再次启动容器。另外,请注意,您最初需要使文件可读。您可以在 *NIX系统上运行CHMOD -R 777 ProjectFolter。如果您重新加载页面,您的浏览器会告诉您:

>

默认情况下,PHP映像没有安装MySQL扩展名,但是我们可以修复。这次,我们将通过Dockerfile构建一个容器。我们已经看到了Dockerfiles的工作原理。它们是由基本图像构建的,进行一些处理,然后在最后执行一个命令。

创建一个名为dockerfile的新文件:
docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
登录后复制
登录后复制
登录后复制

我们要使用php:5.6-apache Image。

然后,我们将安装mysqli扩展名。

接下来,我们需要像PHP映像一样执行Apache2-Foreground(我们只需要安装MySQL扩展程序)。

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
登录后复制
登录后复制
登录后复制

使用构建文件我们可以构建图像。使用此图像,我们构建了容器。

docker rm -f wordpressdb
登录后复制
登录后复制

-t用于给出存储库名称。这 。告诉Docker Dockerfile在哪里。由于Dockerfile位于工作目录中。告诉docker它在工作目录中。

>如果您使用Docker Images检查图像,现在您将看到带有标签最新图像的新图像(因为我们没有为此图像指定标签)。现在,像我们使用php5.6-apache Image一样构建使用此图像的容器。

docker run --name wordpressdb -d mysql:5.7
登录后复制
登录后复制
登录后复制
登录后复制
>检查您的浏览器中的容器IP,您会看到类似的东西:

>

如何为WordPress手动构建Docker容器如果您走了这么远,那么您已经做对了。现在,我们必须将WordPress与数据库链接。这远离著名的5分钟WordPress安装和更复杂的安装,但是从长远来看,您会看到Docker的好处。

>我们如何将WordPress与数据库链接?首先,我们需要将WordPress容器与数据库容器(WordPressDB)链接。这可以通过链接两个容器来完成。有关链接的更多信息,请参见此处。

新参数是 - 链接。第一部分WordPressDB是我们要链接的容器的名称,第二部分MySQL是别名。 Docker修改了WordPress容器的主机,并将WordPressDB的IP设置为MySQL。因此,当我们在WordPress配置上填写数据库的信息时,我们将将主机设置为“ mysql”。
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
登录后复制
登录后复制
登录后复制
现在,使用容器的IP(新IP)转到浏览器。填写数据库的信息,然后登录到管理员面板。如果您尝试安装一个新主题(将尝试在文件系统上进行更改),您将看到类似的内容:

为什么?这是因为运行Apache的用户在文件系统上没有写入访问。这是事情变得有些困难的地方。我们需要构建一个新版本的phpwithmysql映像。转到您的Dockerfile并将其修改为这样:

> 如何为WordPress手动构建Docker容器

>我们尚未创建entrypoint.sh文件,但是我们很快就会这样做。复制Copies entrypoint.sh到容器内部 /内部。 CHMOD 777 /entrypoint.sh使该文件可执行。最后,入门点执行该文件。现在,在与DockerFile同一目录中创建Entrypoint.sh文件。

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
登录后复制
登录后复制
登录后复制
这是官方WordPress映像的简化解决方法,但将确保我们对容器文件系统进行写入访问。我们现在可以构建新图像:

docker run --name wordpressdb -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql:5.7
登录后复制
登录后复制
登录后复制
>确保卸下旧容器并创建新容器:>

docker rm -f wordpressdb
登录后复制
登录后复制

另外,请删除旧的wp-config.php文件。

>
docker run --name wordpress php:5.6-apache
登录后复制
现在,检查浏览器中的WordPress容器的IP。这次,您可以安装主题和插件,并在容器文件系统上进行更改。

上面的某些步骤似乎很神秘且复杂。这就是为什么有许多不同框架和语言的官方图像的原因。每个框架或语言的工作方式都有不同的规格。默认情况下,Docker不允许应用程序在文件系统上写入。这是一件好事还是好事?我认为这是一件好事。我们可以创建仅保存文件的第三个容器。那里的应用程序可以写文件。这样,我们将拥有一个更模块化的体系结构。但是对于那些无法更改的框架(例如WordPress),有解决方法。

>

最终调整

>我们要做的最后一件事是解决停止WordPress容器并重新开始时发生的问题。问题是WordPress将最后一个IP保存为其“家”和“站点” URL。停止WordPress容器并重新启动。这次将有一个新的IP。如果您在浏览器中尝试使用,则会看到图像,CSS和JavaScript文件未正确包含。该解决方案很简单,只需通过添加以下行来修改wp-config.php

docker run --name wordpressdb -d mysql:5.7
登录后复制
登录后复制
登录后复制
登录后复制
请注意,如果您在wp-config.php文件中定义了这些值,则在一般设置中以后无法更改它们。

结论

在本文中,我们介绍了如何为WordPress构建容器。我们以一种相当神秘的方式做到了这一点,长长的命令可能很难记住。应该有一种更简单的方法,并且有! Docker团队构建了一个WordPress映像,您可以在几分钟内轻松设置该图像。毕竟,谁想记住每个设置WordPress的命令?

在本系列的下一篇文章中,向您展示了如何使用官方WordPress映像,我们还将学习如何使用Docker构成使事情变得更加容易的。

>

>如果有更简单的方法,为什么要写这篇文章呢?从本质上讲,这是为了更好地了解Docker的工作原理,要做到这一点,您必须对基本的复杂性弄脏手。这更多是个人规则,因此,当我明天使用Docker时,我会更多地了解它的工作原理以及如何根据我的需求进行调整。希望您现在也对Docker在幕后工作的工作有了更深入的了解。请继续关注本系列中的第三篇文章,我们将与Docker和WordPress一起玩更多乐趣。

> 到目前为止,您对Docker有何看法?您会在下一个项目中考虑吗?在下面的评论中让我知道。

>常见问题(常见问题解答)有关WordPress构建Docker容器的问题

>如何确保我的WordPress的Docker容器是安全的?为了确保您的容器安全,请始终使用最新版本的Docker和WordPress。定期更新您的Docker图像和容器,以包括最新的安全补丁。另外,使用Docker Secrets管理密码等敏感数据。避免运行Docker容器作为根,以最大程度地减少容器的损害。最后,使用Docker安全扫描工具来识别和修复图像中的漏洞。

我如何优化docker容器的性能,用于WordPress?

如何将docker容器的问题排除到WordPress? 🎜> Docker提供了多种故障排除的工具。使用“ Docker Logs”命令查看运行容器的日志。如果您的容器崩溃,请使用“ Docker Inspect”命令获取有关容器的更多信息。您还可以使用“ Docker Stats”命令来监视您的容器的资源使用情况。如果您面临网络问题,请使用“ Docker Network Inspect”命令来检查您的Docker网络。

>如何备份在Docker容器中运行的WordPress网站?

备份您WordPress站点在Docker容器中运行,您可以使用“ Docker CP”命令将文件从容器复制到主机计算机。您也可以使用Docker量来持久数据。如果您使用的是mySQL数据库,则可以使用“ mySqlDump”命令来创建数据库的备份。

>

>如何缩放在Docker容器中运行的WordPress站点?提供了一些用于扩展应用程序的工具。您可以使用Docker组合来定义和运行多容器应用程序,并通过增加容器实例的数量来扩展它们。您还可以使用Docker Swarm或Kubernetes,它们是可以在多个主机上管理和扩展容器的编排工具。

如何自动化Docker Containser中的WordPress网站的部署?您可以使用CI/CD工具(例如Jenkins,Travis CI或GitHub操作)自动在Docker容器中部署WordPress网站。这些工具可以构建您的Docker映像,运行测试并将容器部署到Docker主机或Kubernetes群集。

>如何管理Docker容器中的多个WordPress站点?

>

在Docker容器中管理多个WordPress站点,您可以使用Docker组合将每个站点定义为单独的服务。您还可以使用Docker网络来隔离每个站点的网络流量。如果您使用的是nginx之类的反向代理,则可以将其配置为基于域名的流量将流量路由到适当的容器。

如何更新在docker容器中运行的WordPress站点?

>

>要更新在Docker容器中运行的WordPress站点,您可以从Docker Hub中摘取最新的WordPress映像,停止运行的容器,并使用更新的图像启动新的。请记住在更新之前要备份数据。

>如何监视在Docker容器中运行的WordPress站点?

docker提供了几种用于监视容器的工具。您可以使用“ Docker Stats”命令来监视容器的资源使用情况。您还可以使用Prometheus和Grafana之类的工具从容器中收集和可视化指标。

>我如何将现有的WordPress网站迁移到Docker容器?>

以上是如何为WordPress手动构建Docker容器的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何开始WordPress博客:初学者的分步指南 如何开始WordPress博客:初学者的分步指南 Apr 17, 2025 am 08:25 AM

博客是人们在网上表达观点、意见和见解的理想平台。许多新手渴望建立自己的网站,却因担心技术障碍或成本问题而犹豫不决。然而,随着平台不断发展以满足初学者的能力和需求,现在开始变得比以往任何时候都更容易。 本文将逐步指导您如何建立一个WordPress博客,从主题选择到使用插件提升安全性和性能,助您轻松创建自己的网站。 选择博客主题和方向 在购买域名或注册主机之前,最好先确定您计划涵盖的主题。个人网站可以围绕旅行、烹饪、产品评论、音乐或任何激发您兴趣的爱好展开。专注于您真正感兴趣的领域可以鼓励持续写作

wordpress文章列表怎么调 wordpress文章列表怎么调 Apr 20, 2025 am 10:48 AM

有四种方法可以调整 WordPress 文章列表:使用主题选项、使用插件(如 Post Types Order、WP Post List、Boxy Stuff)、使用代码(在 functions.php 文件中添加设置)或直接修改 WordPress 数据库。

如何在 WordPress 中获取登录用户信息以获得个性化结果 如何在 WordPress 中获取登录用户信息以获得个性化结果 Apr 19, 2025 pm 11:57 PM

最近,我们向您展示了如何通过允许用户将自己喜欢的帖子保存在个性化库中来为用户创建个性化体验。您可以通过在某些地方(即欢迎屏幕)使用他们的名字,将个性化结果提升到另一个水平。幸运的是,WordPress使获取登录用户的信息变得非常容易。在本文中,我们将向您展示如何检索与当前登录用户相关的信息。我们将利用get_currentuserinfo(); 功能。这可以在主题中的任何地方使用(页眉、页脚、侧边栏、页面模板等)。为了使其工作,用户必须登录。因此我们需要使用

如何在父分类的存档页面上显示子分类 如何在父分类的存档页面上显示子分类 Apr 19, 2025 pm 11:54 PM

您想了解如何在父分类存档页面上显示子分类吗?在自定义分类存档页面时,您可能需要执行此操作,以使其对访问者更有用。在本文中,我们将向您展示如何在父分类存档页面上轻松显示子分类。为什么在父分类存档页面上显示子分类?通过在父分类存档页面上显示所有子分类,您可以使其不那么通用,对访问者更有用。例如,如果您运行一个关于书籍的WordPress博客,并且有一个名为“主题”的分类法,那么您可以添加“小说”、“非小说”等子分类法,以便您的读者可以

如何在 WordPress 中按帖子过期日期对帖子进行排序 如何在 WordPress 中按帖子过期日期对帖子进行排序 Apr 19, 2025 pm 11:48 PM

过去,我们分享过如何使用PostExpirator插件使WordPress中的帖子过期。好吧,在创建活动列表网站时,我们发现这个插件非常有用。我们可以轻松删除过期的活动列表。其次,多亏了这个插件,按帖子过期日期对帖子进行排序也非常容易。在本文中,我们将向您展示如何在WordPress中按帖子过期日期对帖子进行排序。更新了代码以反映插件中更改自定义字段名称的更改。感谢Tajim在评论中让我们知道。在我们的特定项目中,我们将事件作为自定义帖子类型。现在

对于初学者来说,WordPress容易吗? 对于初学者来说,WordPress容易吗? Apr 03, 2025 am 12:02 AM

WordPress对初学者来说容易上手。1.登录后台后,用户界面直观,简洁的仪表板提供所有必要功能链接。2.基本操作包括创建和编辑内容,所见即所得的编辑器简化了内容创建。3.初学者可以通过插件和主题扩展网站功能,学习曲线存在但可以通过实践掌握。

如何在 WordPress 中显示查询数量和页面加载时间 如何在 WordPress 中显示查询数量和页面加载时间 Apr 19, 2025 pm 11:51 PM

我们的一位用户询问其他网站如何在页脚中显示查询数量和页面加载时间。您经常会在网站的页脚中看到这一点,它可能会显示类似以下内容:“1.248秒内64个查询”。在本文中,我们将向您展示如何在WordPress中显示查询数量和页面加载时间。只需将以下代码粘贴到主题文件中您喜欢的任何位置(例如footer.php)。queriesin

如何使用 IFTTT 自动化 WordPress 和社交媒体(及更多) 如何使用 IFTTT 自动化 WordPress 和社交媒体(及更多) Apr 18, 2025 am 11:27 AM

您是否正在寻找自动化 WordPress 网站和社交媒体帐户的方法? 通过自动化,您将能够在 Facebook、Twitter、LinkedIn、Instagram 等平台上自动分享您的 WordPress 博客文章或更新。 在本文中,我们将向您展示如何使用 IFTTT、Zapier 和 Uncanny Automator 轻松实现 WordPress 和社交媒体的自动化。 为什么要自动化 WordPress 和社交媒体? 自动化您的WordPre

See all articles