」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 Docker 在本機上運行 WordPress!

使用 Docker 在本機上運行 WordPress!

發佈於2024-11-02
瀏覽:264

在本地系统上安装 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]刪除
最新教學 更多>
  • Python高效去除文本中HTML標籤方法
    Python高效去除文本中HTML標籤方法
    在Python中剝離HTML標籤,以獲取原始的文本表示Achieving Text-Only Extraction with Python's MLStripperTo streamline the stripping process, the Python standard librar...
    程式設計 發佈於2025-05-22
  • 如何使用PHP從XML文件中有效地檢索屬性值?
    如何使用PHP從XML文件中有效地檢索屬性值?
    從php $xml = simplexml_load_file($file); foreach ($xml->Var[0]->attributes() as $attributeName => $attributeValue) { echo $attributeName,...
    程式設計 發佈於2025-05-22
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在Java中的多個返回類型:一種誤解類型:在Java編程中揭示,在Java編程中,Peculiar方法簽名可能會出現,可能會出現,使開發人員陷入困境,使開發人員陷入困境。 getResult(string s); ,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但這確實是如此嗎...
    程式設計 發佈於2025-05-22
  • 如何將來自三個MySQL表的數據組合到新表中?
    如何將來自三個MySQL表的數據組合到新表中?
    mysql:從三個表和列的新表創建新表 答案:為了實現這一目標,您可以利用一個3-way Join。 選擇p。 *,d.content作為年齡 來自人為p的人 加入d.person_id = p.id上的d的詳細信息 加入T.Id = d.detail_id的分類法 其中t.taxonomy ...
    程式設計 發佈於2025-05-22
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    程式設計 發佈於2025-05-22
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-05-22
  • 將圖片浮動到底部右側並環繞文字的技巧
    將圖片浮動到底部右側並環繞文字的技巧
    在Web設計中圍繞在Web設計中,有時可以將圖像浮動到頁面右下角,從而使文本圍繞它纏繞。這可以在有效地展示圖像的同時創建一個吸引人的視覺效果。 css位置在右下角,使用css float and clear properties: img { 浮點:對; ...
    程式設計 發佈於2025-05-22
  • 如何使用PHP將斑點(圖像)正確插入MySQL?
    如何使用PHP將斑點(圖像)正確插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call fil...
    程式設計 發佈於2025-05-22
  • 如何同步迭代並從PHP中的兩個等級陣列打印值?
    如何同步迭代並從PHP中的兩個等級陣列打印值?
    同步的迭代和打印值來自相同大小的兩個數組使用兩個數組相等大小的selectbox時,一個包含country代碼的數組,另一個包含鄉村代碼,另一個包含其相應名稱的數組,可能會因不當提供了exply for for for the uncore for the forsion for for ytry...
    程式設計 發佈於2025-05-22
  • 如何從PHP中的Unicode字符串中有效地產生對URL友好的sl。
    如何從PHP中的Unicode字符串中有效地產生對URL友好的sl。
    為有效的slug生成首先,該函數用指定的分隔符替換所有非字母或數字字符。此步驟可確保slug遵守URL慣例。隨後,它採用ICONV函數將文本簡化為us-ascii兼容格式,從而允許更廣泛的字符集合兼容性。 接下來,該函數使用正則表達式刪除了不需要的字符,例如特殊字符和空格。此步驟可確保slug僅包...
    程式設計 發佈於2025-05-22
  • Java中假喚醒真的會發生嗎?
    Java中假喚醒真的會發生嗎?
    在Java中的浪費喚醒:真實性或神話? 在Java同步中偽裝喚醒的概念已經是討論的主題。儘管存在這種行為的潛力,但問題仍然存在:它們實際上是在實踐中發生的嗎? Linux的喚醒機制根據Wikipedia關於偽造喚醒的文章,linux實現了pthread_cond_wait()功能的Linux實現,...
    程式設計 發佈於2025-05-22
  • Python不會對超範圍子串切片報錯的原因
    Python不會對超範圍子串切片報錯的原因
    在python中用索引切片範圍:二重性和空序列索引單個元素不同,該元素會引起錯誤,切片在序列的邊界之外沒有。 這種行為源於索引和切片之間的基本差異。索引一個序列,例如“示例” [3],返回一個項目。但是,切片序列(例如“示例” [3:4])返回項目的子序列。 索引不存在的元素時,例如“示例” [9...
    程式設計 發佈於2025-05-22
  • 如何使用node-mysql在單個查詢中執行多個SQL語句?
    如何使用node-mysql在單個查詢中執行多個SQL語句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    程式設計 發佈於2025-05-22
  • 如何在php中使用捲髮發送原始帖子請求?
    如何在php中使用捲髮發送原始帖子請求?
    如何使用php 創建請求來發送原始帖子請求,開始使用curl_init()開始初始化curl session。然後,配置以下選項: curlopt_url:請求 [要發送的原始數據指定內容類型,為原始的帖子請求指定身體的內容類型很重要。在這種情況下,它是文本/平原。要執行此操作,請使用包含以下標頭...
    程式設計 發佈於2025-05-22

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3