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

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
PHP依賴注入容器:快速啟動PHP依賴注入容器:快速啟動May 13, 2025 am 12:11 AM

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增強codemodocultion,可驗證性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

PHP中的依賴注入與服務定位器PHP中的依賴注入與服務定位器May 13, 2025 am 12:10 AM

選擇DependencyInjection(DI)用於大型應用,ServiceLocator適合小型項目或原型。 1)DI通過構造函數注入依賴,提高代碼的測試性和模塊化。 2)ServiceLocator通過中心註冊獲取服務,方便但可能導致代碼耦合度增加。

PHP性能優化策略。PHP性能優化策略。May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)啟用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替換loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

PHP電子郵件驗證:確保正確發送電子郵件PHP電子郵件驗證:確保正確發送電子郵件May 13, 2025 am 12:06 AM

phpemailvalidation invoLvesthreesteps:1)格式化進行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

如何使PHP應用程序更快如何使PHP應用程序更快May 12, 2025 am 12:12 AM

tomakephpapplicationsfaster,關注台詞:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

PHP性能優化清單:立即提高速度PHP性能優化清單:立即提高速度May 12, 2025 am 12:07 AM

到ImprovephPapplicationspeed,關注台詞:1)啟用opcodeCachingwithapCutoredUcescriptexecutiontime.2)實現databasequerycachingingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandreduceconnection.4 limitesclection.4.4

PHP依賴注入:提高代碼可檢驗性PHP依賴注入:提高代碼可檢驗性May 12, 2025 am 12:03 AM

依赖注入(DI)通过显式传递依赖关系,显著提升了PHP代码的可测试性。1)DI解耦类与具体实现,使测试和维护更灵活。2)三种类型中,构造函数注入明确表达依赖,保持状态一致。3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

PHP性能優化:數據庫查詢優化PHP性能優化:數據庫查詢優化May 12, 2025 am 12:02 AM

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具