使用 Docker Compose 建構的基本 LAMP 堆疊環境。它由以下部分組成:
到目前為止,我們有幾個不同的 PHP 版本。根據需要使用適當的 php 版本:
docker compose up -d
。 git clone https://github.com/sprintcube/docker-compose-lamp.git
cd docker-compose-lamp/
cp sample.env .env
// modify sample.env as needed
docker compose up -d
// visit localhost
您的 LAMP 堆疊現已準備就緒!您可以透過http://localhost
存取它。
此 Docker Stack 是為本地開發而不是為生產使用而建構的。
此軟體包附帶預設配置選項。您可以透過在根目錄中建立.env
檔案來修改它們。為了簡單起見,只需複製sample.env
檔案中的內容並根據您的需求更新環境變數值即可。
有以下可用的配置變量,您可以透過在自己的.env
檔案中覆蓋來自訂它們。
PHPVERSION用來指定您要使用的 PHP 版本。預設始終為最新的 PHP 版本。
PHP_INI定義您的自訂php.ini
修改以滿足您的要求。
文檔根目錄
它是 Apache 伺服器的文檔根。預設值為./www
。您的所有網站都將轉到此處並自動同步。
APACHE_DOCUMENT_ROOT
Apache 設定檔值。預設值為 /var/www/html。
虛擬主機目錄
這是針對虛擬主機的。預設值為./config/vhosts
。您可以將虛擬主機的conf 檔案放置在這裡。
確保為每個虛擬主機在系統的
hosts
檔案中新增一個條目。
APACHE_LOG_DIR
這將用於儲存 Apache 日誌。預設值為./logs/apache2
。
對於 Apple Silicon 用戶:請選擇 Mariadb 作為資料庫。 Oracle 並沒有為 Arm 架構建構 SQL 容器
資料庫
定義您想要使用的 MySQL 或 MariaDB 版本。
MYSQL_INITDB_DIR
當容器第一次啟動時,目錄中副檔名為.sh
、 .sql
、 .sql.gz
和.sql.xz
的檔案將以字母順序執行。沒有檔案執行權限的.sh
檔案將被取得而不是被執行。預設值為./config/initdb
。
MYSQL_DATA_DIR
這是MySQL 資料目錄。預設值為./data/mysql
。您所有的 MySQL 資料檔案都將儲存在這裡。
MYSQL_LOG_DIR
這將用於儲存 Apache 日誌。預設值為./logs/mysql
。
Apache 設定為在http://localhost
埠 80 上執行。
預設情況下啟用以下模組。
如果你想啟用更多模組,只需更新
./bin/phpX/Dockerfile
即可。您也可以產生 PR,如果適合一般用途,我們將合併。您必須透過執行docker compose build
來重建 docker 映像並重新啟動 docker 容器。
您可以使用docker compose exec
命令連接到 Web 伺服器以對其執行各種操作。使用以下命令透過 ssh 登入容器。
docker compose exec webserver bash
安裝的 php 版本取決於您的.env
檔。
預設安裝以下擴充功能。對於 PHP 版本 <7.xx 可能有所不同
如果你想安裝更多擴展,只需更新
./bin/webserver/Dockerfile
。您還可以產生 PR,如果它適合通用目的,我們將合併。您必須透過執行docker compose build
來重建 docker 映像並重新啟動 docker 容器。
phpMyAdmin 配置為在連接埠 8080 上運作。
http://本地主機:8080/
使用者名稱:根
密碼:老虎
Xdebug 預設安裝,其版本取決於".env"
檔案中所選的 PHP 版本。
X調試版本:
PHP <= 7.3:Xdebug 2.XX
PHP >= 7.4:Xdebug 3.XX
若要使用 Xdebug,您需要根據所選的 PHP 版本啟用./config/php/php.ini
檔案中的設定。
例子:
# Xdebug 2
#xdebug.remote_enable=1
#xdebug.remote_autostart=1
#xdebug.remote_connect_back=1
#xdebug.remote_host = host.docker.internal
#xdebug.remote_port=9000
# Xdebug 3
#xdebug.mode=debug
#xdebug.start_with_request=yes
#xdebug.client_host=host.docker.internal
#xdebug.client_port=9003
#xdebug.idekey=VSCODE
Xdebug VS Code:您必須安裝 Xdebug 擴充功能「PHP Debug」。安裝完成後,進入偵錯並建立啟動文件,以便您的IDE可以監聽並正常運作。
例子:
非常重要: pathMappings
取決於您在 VS Code 中開啟資料夾的方式。每個資料夾都有自己的啟動配置,您可以在.vscode/launch.json
中查看
{
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
// "port": 9000, // Xdebug 2
"port" : 9003 , // Xdebug 3
"pathMappings" : {
// "/var/www/html": "${workspaceFolder } /www" // if you have opened VSCODE in root folder
"/var/www/html" : " ${workspaceFolder} " // if you have opened VSCODE in ./www folder
}
}
]
}
現在,設定斷點並運行調試。
提示!這些配置完成後,您可能需要重新啟動容器。
它與 Redis 一起提供。它在預設連接埠6379
上運行。
對https
域的支援是內建的,但預設為停用。您可以透過 3 種方式啟用和設定 SSL; localhost
上的https
是最簡單的。如果您嘗試重新建立盡可能接近生產環境的測試環境,則可以透過更多配置來支援任何網域名稱。
注意:對於您希望使用https
的每個非 localhost 域名,您需要修改電腦的主機檔案並將網域指向127.0.0.1
。如果您不這樣做,SSL 將不起作用,並且每次您嘗試在本地訪問該網域時都會被路由到互聯網。
要在localhost
(https://localhost) 上啟用https
您需要:
localhost
建立 SSL 憑證:mkcert
,在終端機中執行mkcert localhost 127.0.0.1 ::1
。cert.pem
和cert-key.pem
。config/ssl
目錄中,將其移至您的 docker 設定中。config/vhosts/default.conf
中的443
vhost。完畢。現在,每當您開啟 LAMP 容器時, https
都會在localhost
上執行。
如果您想使用普通網域進行本地測試,並且需要https
支持,最簡單的解決方案是覆蓋所有網域的SSL憑證:
mkcert
,在終端機中執行mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1
,其中將所有網域名稱和 IP 位址替換為您希望支援的網域和 IP 位址。cert.pem
和cert-key.pem
。config/ssl
目錄中,將其移至您的 docker 設定中。config/vhosts/default.conf
中的443
vhost。完畢。由於您將所有網域合併到一個憑證中,因此虛擬主機檔案將支援您的設置,無需進一步修改。但是,如果您願意,您可以新增特定於網域的規則。現在,只要您開啟 LAMP 容器, https
就會在您指定的所有網域上執行。
如果您希望本地測試環境與您的生產環境完全匹配,並且需要https
支持,您可以為您希望支援的每個網域建立 SSL 憑證:
mkcert
,在終端機中執行mkcert [your-domain-name(s)-here]
將括號部分替換為您的網域。[name]-cert.pem
和[name]-cert-key.pem
用唯一的名稱取代括號部分。config/ssl
目錄中,將其移至您的 docker 設定中。config/vhosts/default.conf
) 中的443
範例,制定與您的網域名稱和憑證檔案名稱相符的新規則。完畢。 LAMP 容器啟動時將自動擷取config/ssl
中的任何 SSL 憑證。只要您正確設定 vhosts 檔案並將 SSL 憑證放置在config/ssl
中,任何時候您開啟 LAMP 容器時, https
都會在您指定的網域上執行。
如果您想建立拉取請求或幫助人們解決問題,我們會很高興。如果您想建立 PR,請記住該堆疊不是為生產用途而建造的,並且更改應該適合通用目的而不是過度專業化。
請注意,我們將專案結構從每個 php 版本的多個分支簡化為一個集中的主分支。請針對 master 分支建立 PR。
謝謝你!
我們希望使開發人員能夠快速創建創意應用程式。因此,我們為多個不同的框架和 PHP 版本提供了一個易於設定的本機開發環境。在生產中,您至少應該修改以下主題: