”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 使用 Docker 在本地运行 WordPress!

使用 Docker 在本地运行 WordPress!

发布于2024-11-02
浏览:182

在本地系统上安装 WordPress 有很多步骤。您需要安装 PHP、MySQL、服务器等。值得庆幸的是,有一种更简单的本地安装 WordPress 的方法,这一切都归功于 Docker!方法如下!

步骤

⚠️ 在继续之前,请确保您已经安装了 Docker。

第1步:创建一个新目录

首先,我们需要为您的项目创建一个新的文件夹/目录。在您希望的任何位置创建它并从终端打开/指向它。

mkdir my-wordpress-blog
cd my-wordpress-blog

第 2 步:打开代码编辑器

接下来我们将创建一些文件和文件夹。最简单的方法是打开您最喜欢的代码编辑器。我的是 Visual Studio Code,可以从终端这样打开:

code .

第 3 步:创建 Dockerfile

使用代码编辑器创建第一个名为 Dockerfile 的文件。在文件内,粘贴以下行:

FROM php:7.4-apache

RUN docker-php-ext-install mysqli

但这有什么作用?

嗯,Dockerfile 基本上是一个文件,它提供了如何创建“图像”(基本上是一个蓝图)的说明,该“图像”将用于创建容器,在本例中,该容器将容纳我们的 WordPress 网站。

这个特定的 Dockerfile 的作用基本上是:

  • 使用 Apache 和 PHP 映像作为基础。这意味着我们的容器将安装 Apache 服务器和 PHP。

  • 安装 PHP 扩展 mysqli。这是 WordPress 连接到 MySQL 数据库所需的扩展。

步骤 4:创建 Docker Compose 文件

接下来,我们将创建一个名为 docker-compose.yml 的新文件。将以下内容粘贴到该文件中:

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./wordpress:/var/www/html
    ports:
      - "8080:80"

  db:
    image: mysql
    container_name: my-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password1
      MYSQL_DATABASE: wordpress

那么,这是做什么的?

docker-compose 文件是一个向 Docker 提供有关如何同时创建和运行多个容器的说明的文件。

在我们的例子中,我们的文件将创建并运行 2 个容器:

  1. “网络”容器:这将是我们的 WordPress 网站所在的位置。它将根据我们之前创建的 Dockerfile 创建一个容器。它还将复制我们网站的内容,我们将在下一步中下载这些内容。

  2. MySQL 服务器。这就是我们的数据所在的地方。如果您想使用 MariaDB,请将 image: mysql 替换为 image: mariadb.

第5步:下载WordPress

现在我们已经有了完整堆栈的蓝图,是时候添加一些内容了。我们将前往 WordPress 官方网站并下载 WordPress 文件。

下载应该需要几秒钟,然后它将下载一个 ZIP 文件。

zip 文件应包含一个名为“wordpress”的文件夹。继续将其提取到您的驱动器上。

第 6 步:将 Wordpress 目录移至您的项目

从 ZIP 文件中提取 WordPress 文件夹后,继续将该文件夹移至您的项目。

完成此操作后,项目根目录下的文件应如下所示:

? WordPress
? docker-compose.yml
? Dockerfile

如果 WordPress 文件夹不是“wordpress”,您可以继续重命名它。

第 7 步:构建容器

现在一切准备就绪,我们可以运行我们的网站了。首先,我们需要从 Dockerfile 构建“web”容器的镜像。为此,请从 Docker Compose 运行构建命令:

docker compose build

这应该需要几秒钟才能完成,并且在您的终端中应该如下所示:

Run WordPress locally using Docker!

第 8 步:运行容器

构建成功完成后,您现在可以运行网站。为此,我们使用 Docker Compose 中的 up 命令:

docker compose up -d

运行时,您的终端应如下所示:

Run WordPress locally using Docker!

那么刚才发生了什么?让我们讨论一些技术细节:

我们刚刚所做的是运行两个容器:一个名为“web”,用于我们的 WordPress 网站,另一个名为“db”,其中包含我们的 MySQL 数据库。然后我们使用 Docker Compose 中的命令来方便地同时运行两个容器。

因为这两个容器运行在同一个Compose文件下,所以它们运行在同一个“网络”下。这意味着它们是相互连接的。因此,例如,当您需要从Web容器连接到数据库时,执行此操作的URL是http://db:3306(因为数据库容器的名称是db)。我们在设置网站时需要这个。

第 9 步:设置您的网站

几秒钟后,您的网站应该启动并运行。您可以通过在浏览器中打开此网址来访问它:

http://localhost:8080

打开后,您应该看到以下屏幕:

Run WordPress locally using Docker!

选择语言并单击继续。

系统会要求您提供数据库凭据。添加这些:

  • 数据库名称:wordpress
  • 用户名:root
  • 密码:密码1
  • 数据库主机:db

添加这些后,您可以继续运行安装:

Run WordPress locally using Docker!

现在添加您的网站详细信息。在这里,系统会询问您网站的详细信息,例如网站名称、用户名、密码等。在此添加您喜欢的内容:

Run WordPress locally using Docker!

单击“安装 WordPress”。

完成后,您就可以开始了! ?

Run WordPress locally using Docker!

单击“登录”。您将看到一个登录屏幕:

Run WordPress locally using Docker!

添加您在设置过程中指定的凭据。

田田!就是这样! ?

登录后,您将看到仪表板:

Run WordPress locally using Docker!

您可以在这里撰写文章、创建新页面、根据自己的喜好自定义您的网站等等。这就是 WordPress 如此伟大的原因!

点击右上角您的网站名称即可转到实际网站:

Run WordPress locally using Docker!

这是您在本地启动和运行的网站,配有方便的仪表板,可以在此处访问:

http://localhost:8080/wp-admin/

成功!

享受编辑您的新 WordPress 博客的乐趣!

版本声明 本文转载于:https://dev.to/savvasstephnds/run-wordpress-locally-using-docker-5bk2?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    编程 发布于2025-04-05
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的python功能eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。本文深入研究了eval()和ast.literal_eval()之间的差异,突出显示其安全性含义...
    编程 发布于2025-04-05
  • 如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    为有效的slug生成首先,该函数用指定的分隔符替换所有非字母或数字字符。此步骤可确保slug遵守URL惯例。随后,它采用ICONV函数将文本简化为us-ascii兼容格式,从而允许更广泛的字符集合兼容性。接下来,该函数使用正则表达式删除了不需要的字符,例如特殊字符和空格。此步骤可确保slug仅包含...
    编程 发布于2025-04-05
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-04-05
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-04-05
  • 哪种在JavaScript中声明多个变量的方法更可维护?
    哪种在JavaScript中声明多个变量的方法更可维护?
    在JavaScript中声明多个变量:探索两个方法在JavaScript中,开发人员经常遇到需要声明多个变量的需要。对此的两种常见方法是:在单独的行上声明每个变量: 当涉及性能时,这两种方法本质上都是等效的。但是,可维护性可能会有所不同。 第一个方法被认为更易于维护。每个声明都是其自己的语句,使其...
    编程 发布于2025-04-05
  • \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    \“(1)vs.(;;):编译器优化是否消除了性能差异?\”
    答案: 在大多数现代编译器中,while(1)和(1)和(;;)之间没有性能差异。编译器: perl: 1 输入 - > 2 2 NextState(Main 2 -E:1)V-> 3 9 Leaveloop VK/2-> A 3 toterloop(next-> 8 last-> 9 ...
    编程 发布于2025-04-05
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将其...
    编程 发布于2025-04-05
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    编程 发布于2025-04-05
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 考虑文档中给出的示例:这是内部发生的事情: 现在在3月3日添加另一个月,因为2月在2001年只有2...
    编程 发布于2025-04-05
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-04-05
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-04-05
  • 为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    网格超过身体,用100%grid-template-columns 为什么在grid-template-colms中具有100%的显示器,当位置设置为设置的位置时,grid-template-colly修复了?问题: 考虑以下CSS和html: class =“ snippet-code”> g...
    编程 发布于2025-04-05
  • 在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    在Ubuntu/linux上安装mysql-python时,如何修复\“ mysql_config \”错误?
    mysql-python安装错误:“ mysql_config找不到”“ 由于缺少MySQL开发库而出现此错误。解决此问题,建议在Ubuntu上使用该分发的存储库。使用以下命令安装Python-MysqldB: sudo apt-get安装python-mysqldb sudo pip in...
    编程 发布于2025-04-05
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-04-05

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3