搜索
首页CMS教程WordPress如何为WordPress手动构建Docker容器

如何为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
我可以在3天内学习WordPress吗?我可以在3天内学习WordPress吗?Apr 09, 2025 am 12:16 AM

能在三天内学会WordPress。1.掌握基础知识,如主题、插件等。2.理解核心功能,包括安装和工作原理。3.通过示例学习基本和高级用法。4.了解调试技巧和性能优化建议。

WordPress是CMS吗?WordPress是CMS吗?Apr 08, 2025 am 12:02 AM

WordPress是内容管理系统(CMS)。它提供内容管理、用户管理、主题和插件功能,支持创建和管理网站内容。其工作原理包括数据库管理、模板系统和插件架构,适用于从博客到企业网站的各种需求。

WordPress有什么用?WordPress有什么用?Apr 07, 2025 am 12:06 AM

wordpressgood forvortalyanewebprojectDuetoItsAsatilityAsacms.itexcelsin:1)用户友好性,允许Aeserywebsitesetup; 2)sexibility andcustomized andcustomization and numerthemesandplugins; 3)seoop timigimization; and4)and4)

我应该使用Wix或WordPress吗?我应该使用Wix或WordPress吗?Apr 06, 2025 am 12:11 AM

Wix适合没有编程经验的用户,WordPress适合希望有更多控制和扩展能力的用户。1)Wix提供拖放式编辑器和丰富模板,易于快速搭建网站。2)WordPress作为开源CMS,拥有庞大社区和插件生态,支持深度自定义和扩展。

WordPress的成本是多少?WordPress的成本是多少?Apr 05, 2025 am 12:13 AM

WordPress本身免费,但使用需额外费用:1.WordPress.com提供从免费到付费的套餐,价格从每月几美元到几十美元不等;2.WordPress.org需购买域名(每年10-20美元)和托管服务(每月5-50美元);3.插件和主题多数免费,付费的价格在几十到几百美元之间;通过选择合适的托管服务、合理使用插件和主题、定期维护和优化,可以有效控制和优化WordPress的成本。

WordPress仍然免费吗?WordPress仍然免费吗?Apr 04, 2025 am 12:06 AM

WordPress核心版本是免费的,但使用过程中可能产生其他费用。1.域名和托管服务需要付费。2.高级主题和插件可能需要付费。3.专业服务和高级功能可能需要付费。

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

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

为什么有人会使用WordPress?为什么有人会使用WordPress?Apr 02, 2025 pm 02:57 PM

人们选择使用WordPress是因为其强大和灵活性。1)WordPress是一个开源的CMS,易用性和可扩展性强,适合各种网站需求。2)它有丰富的主题和插件,生态系统庞大,社区支持强大。3)WordPress的工作原理基于主题、插件和核心功能,使用PHP和MySQL处理数据,支持性能优化。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具