Docker Compose、Nginx和MariaDB的完美組合:部署PHP應用程式的最佳實踐
引言:
在現代Web應用程式開發中,使用容器化技術已經成為了一種趨勢。容器化技術可以將應用程式及其相依性打包成一個單獨的容器,使得應用程式可以在任何支援容器化技術的環境中運作。而Docker是當下最受歡迎的一種容器化技術,它可以簡化應用程式的部署、管理和擴展。
對於使用PHP開發的Web應用程序,我們可以使用Docker Compose來管理多個容器,包括Nginx、PHP和資料庫等。本文將介紹如何使用Docker Compose、Nginx和MariaDB來部署和管理一個PHP應用程序,並提供具體的程式碼範例。
安裝Docker和Docker Compose
首先,我們需要在主機上安裝Docker和Docker Compose。可造訪Docker官方網站(https://www.docker.com/)進行下載和安裝。安裝完成後,我們可以透過執行以下命令來確認Docker是否正確安裝:
docker --version docker-compose --version
#建立Docker Compose檔案
在專案的根目錄下建立一個名為docker-compose .yml的文件,用於定義應用程式的服務和相應的配置。以下是一個簡單的docker-compose.yml檔案的範例:
version: '3' services: web: build: context: . dockerfile: Dockerfile ports: - 80:80 volumes: - ./src:/var/www/html depends_on: - db db: image: mariadb environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: mydb MYSQL_USER: user MYSQL_PASSWORD: password volumes: - db-data:/var/lib/mysql volumes: db-data:
上述docker-compose.yml檔案定義了兩個服務,一個是web服務,用於運行Nginx和PHP,另一個是db服務,用於運行MariaDB。 web服務將面向外部主機的80埠暴露出來,並將專案目錄下的src資料夾對應到容器內的/var/www/html目錄。 db服務設定了MariaDB的環境變數和資料卷,用於持久化儲存資料庫資料。
建立Dockerfile
為了建立web服務所需的自訂映像,我們需要在專案目錄下建立一個名為Dockerfile的檔案。以下是一個簡單的Dockerfile檔案的範例:
FROM php:7.4-fpm RUN docker-php-ext-install pdo_mysql WORKDIR /var/www/html
上述Dockerfile檔案基於官方的php:7.4-fpm映像,安裝了pdo_mysql擴展,並將工作目錄設定為/var/www/html。
啟動容器
在專案的根目錄下執行以下命令啟動容器:
docker-compose up -d
透過執行上述命令,Docker將根據docker-compose.yml文件中的配置啟動web和db兩個服務。 -d參數表示以後台模式運作容器。
配置Nginx
為了使Nginx能夠正確地將請求轉發到web服務中的PHP應用程序,我們需要在Nginx的配置中添加以下配置項:
server { listen 80; server_name localhost; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { fastcgi_pass web:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
上述設定檔將請求轉送到web服務中執行的PHP-FPM進程,並將PHP相關的環境變數傳遞給PHP-FPM。
編寫PHP應用程式
在專案目錄下的src資料夾中編寫PHP應用程式程式碼。這裡我們以一個簡單的Hello World程式為例:
<?php echo "Hello World!";
總結:
透過使用Docker Compose、Nginx和MariaDB的組合,我們可以輕鬆地部署和管理PHP應用程式。 Docker Compose提供了一種簡單而強大的方式來定義和運行多個容器,Nginx作為Web伺服器可以處理大量並發請求,而MariaDB則提供了穩定可靠的資料庫服務。希望透過本文的介紹和範例,讀者能夠更好地理解和應用這些技術,並在實際專案中受益。
以上是Docker Compose、Nginx和MariaDB的完美組合:部署PHP應用程式的最佳實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!