首頁  >  文章  >  後端開發  >  Docker Compose、Nginx和MariaDB的完美組合:部署PHP應用程式的最佳實踐

Docker Compose、Nginx和MariaDB的完美組合:部署PHP應用程式的最佳實踐

王林
王林原創
2023-10-12 11:24:331389瀏覽

Docker Compose、Nginx和MariaDB的完美组合:部署PHP应用程序的最佳实践

Docker Compose、Nginx和MariaDB的完美組合:部署PHP應用程式的最佳實踐

引言:
在現代Web應用程式開發中,使用容器化技術已經成為了一種趨勢。容器化技術可以將應用程式及其相依性打包成一個單獨的容器,使得應用程式可以在任何支援容器化技術的環境中運作。而Docker是當下最受歡迎的一種容器化技術,它可以簡化應用程式的部署、管理和擴展。

對於使用PHP開發的Web應用程序,我們可以使用Docker Compose來管理多個容器,包括Nginx、PHP和資料庫等。本文將介紹如何使用Docker Compose、Nginx和MariaDB來部署和管理一個PHP應用程序,並提供具體的程式碼範例。

  1. 安裝Docker和Docker Compose
    首先,我們需要在主機上安裝Docker和Docker Compose。可造訪Docker官方網站(https://www.docker.com/)進行下載和安裝。安裝完成後,我們可以透過執行以下命令來確認Docker是否正確安裝:

    docker --version
    docker-compose --version
  2. #建立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的環境變數和資料卷,用於持久化儲存資料庫資料。

  3. 建立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。

  4. 啟動容器
    在專案的根目錄下執行以下命令啟動容器:

    docker-compose up -d

    透過執行上述命令,Docker將根據docker-compose.yml文件中的配置啟動web和db兩個服務。 -d參數表示以後台模式運作容器。

  5. 配置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。

  6. 編寫PHP應用程式
    在專案目錄下的src資料夾中編寫PHP應用程式程式碼。這裡我們以一個簡單的Hello World程式為例:

    <?php
    echo "Hello World!";
  7. 存取應用程式
    透過造訪http://localhost即可在瀏覽器中查看到執行的PHP應用程式。

總結:
透過使用Docker Compose、Nginx和MariaDB的組合,我們可以輕鬆地部署和管理PHP應用程式。 Docker Compose提供了一種簡單而強大的方式來定義和運行多個容器,Nginx作為Web伺服器可以處理大量並發請求,而MariaDB則提供了穩定可靠的資料庫服務。希望透過本文的介紹和範例,讀者能夠更好地理解和應用這些技術,並在實際專案中受益。

以上是Docker Compose、Nginx和MariaDB的完美組合:部署PHP應用程式的最佳實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn