目錄
-
官方鏡像
-
編寫簡單的Hello world!
1. 編寫Hello world!
2. 編寫Dockerfile
3. 構建並運行
4. 直接使用PHP Docker鏡像運行PHP腳本
-
構建自己的WordPress鏡像用於搭建個人博客站點
1. 准備MySQL數據庫
2. 跑起來
-
修改PHP的文件上傳大小限制
1. 修改Dockerfile,構建自己的鏡像
2. 通過“-v”參數將容器內指定路徑映射到主機目錄的自定義的配置文件
3. 通過“exec”命令進入容器內部修改相關配置
PHP(全名:PHP: Hypertext Preprocessor)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯后代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
官方鏡像
官方鏡像地址:https://hub.docker.com/_/php
編寫簡單的Hello world!
1. 編寫Hello world!
代碼及其簡單,如下所示:
<?php echo "Hello world"; ?>
2. 編寫Dockerfile
Dockerfile文件如下所示:
#鏡像版本見:https://hub.docker.com/_/php FROM php:7.3-cli-alpine3.9 COPY . /usr/src/myapp WORKDIR /usr/src/myapp #運行php腳本 CMD [ "php", "./test.php" ]
這里之所以選擇了alpine的鏡像,主要是體積更小:
3. 構建並運行
構建命令如下所示:
docker build --rm -f "dockerfile" -t phptest1:latest .
運行:
4. 直接使用PHP Docker鏡像運行PHP腳本
在日常開發中,如果我們只是編寫簡單的PHP腳本用於簡單的實踐,那么我們完全可以
直接使用PHP Docker鏡像來運行PHP腳本,避免反復的構建過程,從而加速開發:
docker run -it --rm ` --name php-running-script ` -v D:\temp\php:/usr/src/myapp ` -w /usr/src/myapp ` php php test.php
運行命令參數說明大家可以回顧前面的內容,以上命令主體操作如下:
- 運行php最新鏡像,運行完成后自動刪除容器。其中“-it”等同於“-ti”等同於“-i -t”,也就是讓容器的標准輸入保持打開,然后分配一個偽終端並綁定到容器的標准輸入上;
- 容器名稱為“php-running-script”;
- 將主機目錄“D:\temp\php”加載為數據卷,映射到容器內目錄“/usr/src/myapp”。關於數據卷的相關講解,我們在后續的章節會結合相關實踐進一步講解;
- 指定工作目錄“/usr/src/myapp”;
- 執行PHP腳本“test.php”。
構建自己的WordPress鏡像用於搭建個人博客站點
WordPress是使用PHP語言開發的博客平台,用戶可以在支持PHP和MySQL數據庫的服務器上架設屬於自己的網站。也可以把 WordPress當作一個內容管理系統(CMS)來使用。
WordPress是一款個人博客系統,並逐步演化成一款內容管理系統軟件,它是使用PHP語言和MySQL數據庫開發的,用戶可以在支持 PHP 和 MySQL數據庫的服務器上使用自己的博客。
WordPress官方鏡像地址為:https://hub.docker.com/_/wordpress
接下來,我們就基於官方鏡像開始搭建。
1.准備MySQL數據庫
我們先需要准備一個MySQl數據庫,大家可以使用現成的MySQL數據庫,也可以參考數據庫容器化的相關章節來進行搭建。
參考命令如下所示:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
注意:MySQL容器創建完成后,需要對root賬號進行設置才能夠通過數據庫連接訪問MySQL,具體見數據庫容器化相關章節。
2.跑起來
接下來,我們就可以運行WordPress鏡像了,參考命令如下所示:
docker run ` --name myblog ` --link mysql:wordpressdb ` -e WORDPRESS_DB_HOST=wordpressdb:3306 ` -e WORDPRESS_DB_PASSWORD=123456 ` -e WORDPRESS_DB_NAME=wordpress ` -p 3000:80 ` wordpress
如上述命令,我們基於WordPressWordPress鏡像創建了一個名為myblog的容器,外部端口為3000,容器端口為80。然后使用“--link”參數將該容器和mysql容器(上一步創建的MySQL容器)建立了鏈接,是其能否訪問mysql容器,並且建立了別名wordpressdb。接下來,通過環境變量設置了WordPress的MySQL的一些參數,比如數據庫服務器、密碼、庫名稱。運行結果如下圖所示:
接下來,我們訪問我們的博客網址“http://localhost:3000/”試試:
經過一些簡單設置,我們又為WordPress添加了一個即將關站的博客站:
修改PHP的文件上傳大小限制
基於Docker運行PHP應用,經常會遇到文件上傳大小限制的問題。比如剛剛部署的WordPress個人博客站點,如果我們上傳一些個人主題,很容易就突破了PHP的文件上傳大小限制(默認2M,對應設置key為“upload_max_filesize”),這時我們有以下方式進行處理:
1.修改Dockerfile,構建自己的鏡像
使用自己的php配置文件(php.ini)替換默認的php配置文件。如基於wordpress鏡像構建自己的鏡像,添加類似於“COPY ./config/php.ini /usr/local/etc/php/conf.d/”的復制命令。
2.通過“-v”參數將容器內指定路徑映射到主機目錄的自定義的配置文件
例如“-v d:/tmp/php/php.ini:/usr/local/etc/php/conf.d/uploads.ini”。