目錄
-
官方映象
-
編寫簡單的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”。