透過Docker Compose、Nginx和MariaDB實現PHP應用程式的監控與追蹤
隨著雲端運算與容器技術的發展,越來越多的應用程式開始在Docker容器中進行部署。在這種情況下,如何對應用程式進行監控和追蹤成為一個重要的問題。本文將介紹如何透過Docker Compose、Nginx和MariaDB來實現PHP應用程式的監控與追踪,並給出具體的程式碼範例。
一、準備工作
在開始之前,需要準備好以下環境:
- Docker:確保已經安裝了Docker,並且可以正常運作。
- Docker Compose:確保已經安裝了Docker Compose,並且可以正常運作。
- Nginx:用於代理程式和負載平衡請求。
- MariaDB:用於儲存應用程式的資料。
二、建立Docker Compose檔案
在任意目錄下建立一個名為docker-compose.yml的文件,檔案內容如下:
version: '3' services: web: build: . ports: - "80:80" db: image: mariadb environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=test_db volumes: - ./data:/var/lib/mysql
在上述文件中,我們創建了兩個服務,一個是web服務,一個是db服務。 web服務將會建構應用程式的鏡像,並將80埠對應到宿主機上。 db服務使用mariadb鏡像,並指定了root密碼和資料庫名稱,並將資料儲存在宿主機的./data目錄下。
三、建立Nginx設定檔
在與docker-compose.yml相同的目錄下建立名為nginx.conf的文件,檔案內容如下:
worker_processes 1; events { worker_connections 1024; } http { server { listen 80; server_name localhost; location / { proxy_pass http://web; } } }
在在上述文件中,我們配置了Nginx監聽80端口,並將請求轉發給名為web的Docker服務。
四、建立PHP應用程式程式碼
在與docker-compose.yml相同的目錄下建立名為index.php的文件,檔案內容如下:
<?php $dbhost = 'db'; $dbuser = 'root'; $dbpass = 'root'; $dbname = 'test_db'; $conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname); if($conn->connect_error) { die("连接失败:" . $conn->connect_error); } echo "连接成功"; $conn->close(); ?>
在上述文件中,我們透過mysqli擴充連接到MariaDB資料庫,並列印出連接成功的訊息。
五、建置與執行
在終端機中進入到與docker-compose.yml相同的目錄下,執行下列指令建置與執行容器:
$ docker-compose build $ docker-compose up -d
在瀏覽器中開啟http://localhost,應該可以看到連線成功的訊息。
六、監控與追蹤
為了實現PHP應用程式的監控與追踪,我們可以使用一些常用的工具,例如:
- ##Prometheus:用於收集和儲存監控指標資料。
- Grafana:用於視覺化監控指標資料。
- Zipkin:用於追蹤應用程式中的請求。
prometheus: image: prom/prometheus volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml ports: - "9090:9090" grafana: image: grafana/grafana volumes: - ./grafana-data:/var/lib/grafana ports: - "3000:3000"在與docker-compose.yml相同的目錄下建立一個名為prometheus.yml的文件,檔案內容如下:
global: scrape_interval: 15s scrape_configs: - job_name: 'php-app' static_configs: - targets: ['web:80']在上述文件中,我們配置了Prometheus定期收集web服務上的指標資料。 執行以下指令重新建置和執行容器,即可啟動Prometheus和Grafana:
$ docker-compose build $ docker-compose up -d在瀏覽器中開啟http://localhost:3000,使用預設的使用者名稱和密碼( admin/admin)登入Grafana,然後配置Prometheus資料來源並建立儀表板來視覺化監控指標資料。 至於Zipkin的配置,您可以參考官方文件以及相關範例程式碼來完成。 總結透過Docker Compose、Nginx和MariaDB,我們可以輕鬆地建立一個PHP應用程式的監控與追蹤環境。透過配置Prometheus和Grafana,可以實現對應用程式的監控指標資料的收集和視覺化。透過配置Zipkin,可以實現對應用程式中請求的追蹤。以上是一個簡單的範例,您可以根據實際需求和環境進行自訂配置和調整。希望本文對您有幫助!
以上是透過Docker Compose、Nginx和MariaDB實現PHP應用程式的監控與追蹤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在PHP中,trait適用於需要方法復用但不適合使用繼承的情況。 1)trait允許在類中復用方法,避免多重繼承複雜性。 2)使用trait時需注意方法衝突,可通過insteadof和as關鍵字解決。 3)應避免過度使用trait,保持其單一職責,以優化性能和提高代碼可維護性。

依賴注入容器(DIC)是一種管理和提供對象依賴關係的工具,用於PHP項目中。 DIC的主要好處包括:1.解耦,使組件獨立,代碼易維護和測試;2.靈活性,易替換或修改依賴關係;3.可測試性,方便注入mock對象進行單元測試。

SplFixedArray在PHP中是一種固定大小的數組,適用於需要高性能和低內存使用量的場景。 1)它在創建時需指定大小,避免動態調整帶來的開銷。 2)基於C語言數組,直接操作內存,訪問速度快。 3)適合大規模數據處理和內存敏感環境,但需謹慎使用,因其大小固定。

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。

JavaScript中處理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。 1.??返回第一個非null或非undefined的操作數。 2.??=將變量賦值為右操作數的值,但前提是該變量為null或undefined。這些操作符簡化了代碼邏輯,提高了可讀性和性能。

CSP重要因為它能防範XSS攻擊和限制資源加載,提升網站安全性。 1.CSP是HTTP響應頭的一部分,通過嚴格策略限制惡意行為。 2.基本用法是只允許從同源加載資源。 3.高級用法可設置更細粒度的策略,如允許特定域名加載腳本和样式。 4.使用Content-Security-Policy-Report-Only頭部可調試和優化CSP策略。

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。

HTTPS是一種在HTTP基礎上增加安全層的協議,主要通過加密數據保護用戶隱私和數據安全。其工作原理包括TLS握手、證書驗證和加密通信。實現HTTPS時需注意證書管理、性能影響和混合內容問題。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

記事本++7.3.1
好用且免費的程式碼編輯器

Dreamweaver CS6
視覺化網頁開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3漢化版
中文版,非常好用