在現代軟體開發領域,容器化已成為高效部署和可擴展性的基石。 Docker 可以輕鬆地將應用程式及其相依性打包到可移植容器中。在本部落格中,我們將引導您使用 Docker Compose 建立多容器 PHP 和 MySQL 應用程式。
一致性:在開發和生產的所有階段都在同一環境中運行您的應用程式。
隔離:將 PHP 和 MySQL 等服務保存在單獨的容器中,以實現模組化和可維護的設定。
易於擴展:隨著應用程式的成長,輕鬆新增或刪除容器。
您的專案目錄應如下所示:
project/ │ ├── php-app/ │ ├── Dockerfile │ └── index.php │ └── docker-compose.yml
這是 docker-compose.yml 檔案:
version: '3.8' services: php-app: build: ./php-app # Builds the PHP app Docker image from the ./php-app directory ports: - "8080:80" # Maps port 8080 on the host to port 80 in the container depends_on: - mysql # Ensures MySQL starts before the PHP app mysql: image: mysql:8.0 # Uses the official MySQL image ports: - "3306:3306" # Maps port 3306 on the host to port 3306 in the container environment: MYSQL_ROOT_PASSWORD: root # Root password for MySQL MYSQL_DATABASE: mydb # Initial database to create volumes: - mysql-data:/var/lib/mysql # Persists MySQL data in a named volume volumes: mysql-data: # Declares a named volume for MySQL data persistence
index.php 檔案連接到 MySQL 容器:
<?php $servername = "mysql"; // Service name defined in docker-compose.yml $username = "root"; $password = "root"; $database = "mydb"; try { // Create connection $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password); // Set PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected to MySQL successfully!"; } catch (PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?>
Dockerfile 建置具有所需相依性的 PHP 容器:
# Use the official PHP image FROM php:8.2-apache # Install PDO MySQL extension RUN docker-php-ext-install pdo pdo_mysql # Set the working directory WORKDIR /var/www/html # Copy the application code COPY index.php . # Expose port 80 EXPOSE 80
建立目錄結構
建置並啟動容器在專案目錄中開啟終端並運行:
docker-compose up --build
造訪 PHP 應用程式 在瀏覽器中造訪 http://localhost:8080。如果一切設定正確,您應該看到:
Connected to MySQL successfully!
使用 MySQL 用戶端或 MySQL Workbench。
使用以下命令連接到 localhost:3306:
使用者名稱:root
密碼:root
驗證資料庫 mydb 是否已建立。
服務依賴管理:depends_on 確保 MySQL 在 PHP 應用程式之前啟動。
資料持久化:mysql-data卷儲存MySQL數據,防止容器重新啟動後遺失。
連接埠映射:透過映射到主機的連接埠輕鬆存取服務。
將更多服務(如 Nginx 或 Redis)加入 Compose 檔案。
使用 .env 檔案來管理敏感配置。
使用 Docker Compose 的縮放選項來水平縮放服務。
透過此設置,您已經使用 Docker Compose 建立了一個可擴展的模組化 PHP 和 MySQL 應用程式。容器化可簡化環境管理並為您的應用程式雲端部署做好準備。無論您是初學者還是經驗豐富的開發人員,Docker 都是現代應用程式開發不可或缺的工具。
準備好將您的設定提升到新的水平了嗎?嘗試將其與 CI/CD 管道或 Kubernetes 整合以實現生產級環境。
以上是Dockerize 您的 PHP 和 MySQL 應用程式:多容器應用程式逐步指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!