>在我的上一篇文章中,我们介绍了什么是docker以及如何使用几个命令启动和运行。但是,我们还没有做任何有用的事情。有很多方法可以使用Docker获得WordPress环境,在本文中,我将向您展示如何手动设置Docker容器与WordPress一起使用。如果您想快速介绍Docker,可以跳回这里的第一篇文章。
钥匙要点>
如果您运行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容器>
>
那么,我们如何将文件放入该文件夹中?默认情况下,该文件夹停留在容器中,并且是看不见的。但是,不要长时间(别忘了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。
接下来,我们需要像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与数据库链接?首先,我们需要将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并将其修改为这样:
>>我们尚未创建entrypoint.sh文件,但是我们很快就会这样做。复制Copies entrypoint.sh到容器内部 /内部。 CHMOD 777 /entrypoint.sh使该文件可执行。最后,入门点执行该文件。现在,在与DockerFile同一目录中创建Entrypoint.sh文件。
另外,请删除旧的wp-config.php文件。 上面的某些步骤似乎很神秘且复杂。这就是为什么有许多不同框架和语言的官方图像的原因。每个框架或语言的工作方式都有不同的规格。默认情况下,Docker不允许应用程序在文件系统上写入。这是一件好事还是好事?我认为这是一件好事。我们可以创建仅保存文件的第三个容器。那里的应用程序可以写文件。这样,我们将拥有一个更模块化的体系结构。但是对于那些无法更改的框架(例如WordPress),有解决方法。 >我们要做的最后一件事是解决停止WordPress容器并重新开始时发生的问题。问题是WordPress将最后一个IP保存为其“家”和“站点” URL。停止WordPress容器并重新启动。这次将有一个新的IP。如果您在浏览器中尝试使用,则会看到图像,CSS和JavaScript文件未正确包含。该解决方案很简单,只需通过添加以下行来修改wp-config.php
在本系列的下一篇文章中,向您展示了如何使用官方WordPress映像,我们还将学习如何使用Docker构成使事情变得更加容易的。 >如果有更简单的方法,为什么要写这篇文章呢?从本质上讲,这是为了更好地了解Docker的工作原理,要做到这一点,您必须对基本的复杂性弄脏手。这更多是个人规则,因此,当我明天使用Docker时,我会更多地了解它的工作原理以及如何根据我的需求进行调整。希望您现在也对Docker在幕后工作的工作有了更深入的了解。请继续关注本系列中的第三篇文章,我们将与Docker和WordPress一起玩更多乐趣。
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
docker run --name wordpress php:5.6-apache
现在,检查浏览器中的WordPress容器的IP。这次,您可以安装主题和插件,并在容器文件系统上进行更改。最终调整
docker run --name wordpressdb -d mysql:5.7
请注意,如果您在wp-config.php文件中定义了这些值,则在一般设置中以后无法更改它们。
在本文中,我们介绍了如何为WordPress构建容器。我们以一种相当神秘的方式做到了这一点,长长的命令可能很难记住。应该有一种更简单的方法,并且有! Docker团队构建了一个WordPress映像,您可以在几分钟内轻松设置该图像。毕竟,谁想记住每个设置WordPress的命令?
>常见问题(常见问题解答)有关WordPress构建Docker容器的问题
>如何确保我的WordPress的Docker容器是安全的?为了确保您的容器安全,请始终使用最新版本的Docker和WordPress。定期更新您的Docker图像和容器,以包括最新的安全补丁。另外,使用Docker Secrets管理密码等敏感数据。避免运行Docker容器作为根,以最大程度地减少容器的损害。最后,使用Docker安全扫描工具来识别和修复图像中的漏洞。我如何优化docker容器的性能,用于WordPress?
备份您WordPress站点在Docker容器中运行,您可以使用“ Docker CP”命令将文件从容器复制到主机计算机。您也可以使用Docker量来持久数据。如果您使用的是mySQL数据库,则可以使用“ mySqlDump”命令来创建数据库的备份。
>如何自动化Docker Containser中的WordPress网站的部署?您可以使用CI/CD工具(例如Jenkins,Travis CI或GitHub操作)自动在Docker容器中部署WordPress网站。这些工具可以构建您的Docker映像,运行测试并将容器部署到Docker主机或Kubernetes群集。
>
>要更新在Docker容器中运行的WordPress站点,您可以从Docker Hub中摘取最新的WordPress映像,停止运行的容器,并使用更新的图像启动新的。请记住在更新之前要备份数据。>如何监视在Docker容器中运行的WordPress站点? docker提供了几种用于监视容器的工具。您可以使用“ Docker Stats”命令来监视容器的资源使用情况。您还可以使用Prometheus和Grafana之类的工具从容器中收集和可视化指标。>我如何将现有的WordPress网站迁移到Docker容器?以上是如何为WordPress手动构建Docker容器的详细内容。更多信息请关注PHP中文网其他相关文章!