1. 程式人生 > >Docker最全教程之使用PHP搭建個人部落格站點(二十二)

Docker最全教程之使用PHP搭建個人部落格站點(二十二)

目錄

  • 官方映象 

  • 編寫簡單的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”。

3.通過“exec”命令進入容器內部修改相關配