在docker中,LAMP是指linux(操作系統)、apache http服務器、mysql(mariadb等數據庫軟件)和php(perl或python)的組合方案,一般用來建立Web服務器環境。
本教程操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。
LAMP指的Linux(操作系統)、Apache HTTP服務器、MySQL(有時也指MariaDB,數據庫軟件)和PHP(有時也是指Perl或Python)的組合方案,一般很適合用來建立Web服務器環境。
下面介紹如何使用Docker來搭建一個包含LAMP組件的容器。
下載LAMP鏡像
搜索Docker Hub上被收藏或使用較多的LAMP鏡像,筆者推薦選擇tutum/lamp鏡像:
#?sudo?docker?search?-s?10?lamp tutum/lamp??????????????Out-of-the-box?LAMP?image?(PHP+MySQL)???????????67? 執行docker?pull命令,下載鏡像: ?#?sudo?docker?pull?tutum/lamp
使用默認方式啟動LAMP容器
利用下載的鏡像啟動一個容器,并映射容器的8080端口和3306端口:
#?sudo?docker?run?-d?-p?8080:80?-p?3306:3306?tutum/lamp #?docker?ps 使用curl命令測試,可以查看到默認的應用已經啟動: #?curl?http://127.0.0.1:8080
部署自己的PHP應用
默認的容器啟動了一個helloword應用。讀者可以基于此鏡像,編輯Dockerfile來創建自定義LAMP應用鏡像。
在宿主主機上創建新的工作目錄lamp:
#?mkdir?lamp #?cd?lamp #?touch?Dockerfile
在php目錄下里面創建Dockerfile文件,內容為:
FROM?tutum/lamp:latest RUN?rm?-fr?/app?&&git?clone?https://github.com/username/customapp.git?/app #這里將https://github.com/username/customapp.git?地址替換為你自己的項目地址 EXPOSE?80?3306CMD?["/run.sh"]
創建鏡像,命名為dockerpool/my-lamp-app:
#?docker?build?-t?dockerpool/my-lamp-app?. 利用新創建鏡像啟動容器,注意啟動時候指定-d參數,讓容器后臺運行: #?docker?run?-d?-p?8080:80?-p?3306:3306?dockerpool/my-lamp-app 在本地主機上使用curl看一下自己的應用程序是不是已經正確啟動: #?curl?http://127.0.0.1:8080/
在PHP程序中連接數據庫
1、在容器中訪問MySQL數據庫
下載的tutum/lamp鏡像中的MySQL數據庫已帶有默認的root用戶,本地連接可以不使用密碼,所以在代碼中訪問數據庫的實現非常簡單:
<?php $mysql = new mysqli("localhost", "root"); echo "MySQL Server info: ".$mysql->host_info; ?>
2、在容器外訪問MySQL數據庫
默認的MySQL數據庫不支持root用戶遠程登錄,因此在容器外無法直接通過root用戶訪問MySQL數據庫。
當第一次使用tutum/lamp鏡像啟動容器的時候,它會自動創建一個叫admin的MySQL用戶,并生成一個隨機密碼,使用docker logs命令可以獲取到這個密碼:
#?sudo?docker?logs?9cb
注意 admin用戶具有root相同的權限。
推薦學習:《docker視頻教程》