如何開發一個 PHP 的 Docker 化應用(二)
歡迎進入「PHP 應用 Docker 開發大禮包 - Powered by DaoCloud」,我們為 PHP 開發者準備了六篇由淺入深、精心設計的系列文章。此篇為本系列的第 2 篇文章。
目標:基于 PHP 的 Docker 基礎鏡像,開發一個 Docker 化的示例 PHP 應用 。
本項目代碼維護在 DaoCloud/php-sample 項目中。
Docker 化應用的關鍵元素
* 鏡像是 Docker 應用的靜態表示,是應用的交付件,鏡像中包含了應用運行所需的所有依賴:包括應用代碼、應用依賴庫、應用運行時和操作系統。
* Dockerfile 是一個描述文件,描述了產生 Docker 鏡像的過程。詳細文檔請參見 Dockerfile文檔
* 容器是鏡像運行時的動態表示,如果把鏡像想象為一個 Class 那么容器就是這個 Class 的 instance 實例。
一個應用 Docker 化的第一步就是通過 Dockerfile 產生應用鏡像。
編寫 Dockerfile
> 本次基礎鏡像使用 PHP 官方鏡像,也可以根據自己的項目需求與環境依賴使用 定制的 PHP 基礎鏡像 。
因所有官方鏡像均位于境外服務器,為了確保所有示例能正常運行,DaoCloud 提供了一套境內鏡像源,并與官方源保持同步。
官方鏡像維護了自 5.4 版本起的所有 PHP 基礎鏡像,所有鏡像均采用debian:jessie作為系統鏡像。
首先,選擇官方的php:5.6-cli鏡像作為項目的基礎鏡像。
dockerfileFROM daocloud.io/php:5.6-cli
由于該示例代碼較為簡單,我們采用僅安裝 PHP CLI 的 Docker 鏡像來運行。
接著,將代碼復制到目標目錄。
dockerfileCOPY . /app
WORKDIR /app
CMD [ "php", "./hello.php" ]
ADD與COPY的區別,總體來說ADD和COPY都是添加文件的操作,其中ADD比COPY功能更多,ADD允許后面的參數為 URL,還有ADD添加的文件為壓縮包的話,它將自動解壓。
CMD為本次構建出來的鏡像運行起來時候默認執行的命令,我們可以通過docker run的啟動命令修改默認運行命令。
Dockerfile 具體語法請參考: Dockerfile 。
有了 Dockerfile 以后,我們可以運行下面的命令構建 PHP 應用鏡像并命名為my-php-app:
docker build -t my-php-app .最后,讓我們從鏡像啟動容器:
docker run my-php-appnohighlight
Welcome the world of Docker !
如果看到這段字符串,那么就說明你成功進入到了一個 Docker 化的世界。
歡迎來到 Docker 的世界,這個世界有你意想不到的精彩!