使用Docker Compose、Nginx和MariaDB建構可伸縮的PHP應用程式叢集
引言:
在現代應用程式開發中,建構可伸縮的應用程序集群是至關重要的。透過使用Docker Compose、Nginx和MariaDB,我們可以輕鬆地建立一個可伸縮的PHP應用程式集群,為我們的應用程式提供高可用性和靈活性。在本文中,我們將探討如何使用這些工具建立一個簡單而強大的PHP應用程式集群,並提供具體的程式碼範例。
在開始之前,我們需要確保已經安裝了Docker和Docker Compose。在你的開發環境中打開終端,並運行以下命令來檢查它們是否已正確安裝:
$ docker --version $ docker-compose --version
如果返回了相應的版本信息,說明已經成功安裝了Docker和Docker Compose。接下來,我們將建立一個新的專案目錄,並在其中建立一個docker-compose.yml檔案。
$ mkdir my-php-cluster $ cd my-php-cluster $ touch docker-compose.yml
第二部分:編寫Docker Compose檔案
接下來,我們將在docker-compose.yml檔案中定義我們的應用程式叢集的配置。此配置將包括PHP、Nginx和MariaDB的服務定義。以下是一個基本的docker-compose.yml檔案的範例:
version: '3' services: php: build: context: . dockerfile: Dockerfile.php restart: always ports: - "8000:80" nginx: build: context: . dockerfile: Dockerfile.nginx restart: always ports: - "80:80" depends_on: - php db: image: mariadb command: --default-authentication-plugin=mysql_native_password restart: always ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: secret
在該範例中,我們定義了三個服務:php、nginx和db。 php服務將建置一個包含PHP的Docker映像,並將連接埠對應到主機的8000連接埠。 nginx服務將建置一個包含Nginx的Docker映像,並將連接埠對應到主機的80連接埠。 db服務將使用MariaDB官方提供的Docker映像,並將連接埠對應到主機的3306連接埠。最後,我們也指定了db服務的環境變量,用於設定root密碼。
第三部分:編寫Dockerfile檔案
為了讓我們的映像檔能夠建置成功,我們還需要編寫Dockerfile檔。
首先,我們建立一個名為Dockerfile.php的文件,並將以下內容複製到文件中:
FROM php:7.4-fpm WORKDIR /var/www/html RUN apt-get update && apt-get install -y libzip-dev zip unzip && docker-php-ext-install zip COPY . . RUN composer install --no-dev
這個Dockerfile使用了官方的PHP 7.4 FPM映像作為基礎鏡像,並透過RUN指令安裝了一些額外的依賴項。然後,我們將整個應用程式目錄複製到容器的/var/www/html目錄下,並執行composer install命令來安裝PHP相依性。
接下來,我們建立一個名為Dockerfile.nginx的文件,並將以下內容複製到檔案中:
FROM nginx:latest COPY nginx.conf /etc/nginx/nginx.conf
這個Dockerfile使用了最新的Nginx官方映像作為基礎鏡像,並將自訂的nginx.conf檔案複製到容器的/etc/nginx/目錄下。
第四部分:建立Nginx設定檔
在我們的Dockerfile中,我們提到了一個名為nginx.conf的設定檔。現在,我們建立一個名為nginx.conf的文件,並將以下內容複製到檔案中:
events {} http { upstream php { server php:9000; } server { listen 80; location / { proxy_pass http://php; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } }
這個nginx.conf設定檔定義了一個名為php的上游伺服器,該伺服器將代理請求到php服務的9000埠。然後,我們定義了一個監聽80埠的server區塊,並將所有請求代理到php上游伺服器。
第五部分:執行應用程式叢集
現在,我們已經完成了所有的配置,並且可以透過執行docker-compose up命令來啟動我們的應用程式叢集。
在終端機中,進入我們的專案目錄,並執行以下命令:
$ docker-compose up -d
以上命令將會在後台啟動我們的應用程式叢集。請稍等片刻,直到所有服務成功啟動。
第六部分:測試應用程式叢集
一旦我們的應用程式叢集成功啟動,我們可以透過瀏覽器存取http://localhost來測試它。
在瀏覽器中輸入http://localhost,並按下回車鍵。如果一切正常,你應該能夠看到你的應用程式正在運行。
第七部分:擴展應用程式叢集
透過使用Docker Compose的scale功能,我們可以輕鬆地擴展我們的應用程式叢集。
假設我們要增加php服務的實例數,我們可以執行以下指令:
$ docker-compose up -d --scale php=3
以上指令將啟動3個php實例,實作我們的應用程式叢集的橫向擴充。
結束語:
透過使用Docker Compose、Nginx和MariaDB,我們可以輕鬆地建立一個可伸縮的PHP應用程式叢集。在本文中,我們提供了一個基本的範例,以幫助你入門,並提供了詳細的程式碼範例。希望本文對你有所幫助,並啟發你建立更強大的應用程式叢集。
以上是使用Docker Compose、Nginx和MariaDB建構可伸縮的PHP應用程式集群的詳細內容。更多資訊請關注PHP中文網其他相關文章!