目錄
官方鏡像?
編寫簡(jiǎn)單的Hello world!
1. 編寫Hello world!?
2. 編寫Dockerfile?
3. 構(gòu)建并運(yùn)行?
4. 直接使用PHP Docker鏡像運(yùn)行PHP腳本?
構(gòu)建自己的WordPress鏡像用于搭建個(gè)人博客站點(diǎn)?
1. 準(zhǔn)備MySQL數(shù)據(jù)庫?
2. 跑起來?
修改PHP的文件上傳大小限制?
1. 修改Dockerfile睁本,構(gòu)建自己的鏡像?
2. 通過“-v”參數(shù)將容器內(nèi)指定路徑映射到主機(jī)目錄的自定義的配置文件?
3. 通過“exec”命令進(jìn)入容器內(nèi)部修改相關(guān)配置?
PHP(全名:PHP: Hypertext Preprocessor)是一種通用開源腳本語言队丝。語法吸收了C語言、Java和Perl的特點(diǎn)腹缩,利于學(xué)習(xí)屿聋,使用廣泛,主要適用于Web開發(fā)領(lǐng)域藏鹊。PHP 獨(dú)特的語法混合了C润讥、Java、Perl以及PHP自創(chuàng)的語法盘寡。它可以比CGI或者Perl更快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁楚殿。用PHP做出的動(dòng)態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)文檔中去執(zhí)行竿痰,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多脆粥;PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行影涉,使代碼運(yùn)行更快变隔。
官方鏡像
官方鏡像地址:https://hub.docker.com/_/php
編寫簡(jiǎn)單的Hello world!
1. 編寫Hello world!
代碼及其簡(jiǎn)單蟹倾,如下所示:
2. 編寫Dockerfile
Dockerfile文件如下所示:
#鏡像版本見:https://hub.docker.com/_/phpFROM php:7.3-cli-alpine3.9COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
#運(yùn)行php腳本
CMD [ "php","./test.php"]
這里之所以選擇了alpine的鏡像匣缘,主要是體積更胁痢:
3. 構(gòu)建并運(yùn)行
構(gòu)建命令如下所示:
docker build --rm -f"dockerfile"-t phptest1:latest .
運(yùn)行:
4. 直接使用PHP Docker鏡像運(yùn)行PHP腳本
在日常開發(fā)中,如果我們只是編寫簡(jiǎn)單的PHP腳本用于簡(jiǎn)單的實(shí)踐肌厨,那么我們完全可以
直接使用PHP Docker鏡像來運(yùn)行PHP腳本培慌,避免反復(fù)的構(gòu)建過程,從而加速開發(fā):
運(yùn)行命令參數(shù)說明大家可以回顧前面的內(nèi)容柑爸,以上命令主體操作如下:
1)運(yùn)行php最新鏡像吵护,運(yùn)行完成后自動(dòng)刪除容器。其中“-it”等同于“-ti”等同于“-i -t”竖配,也就是讓容器的標(biāo)準(zhǔn)輸入保持打開何址,然后分配一個(gè)偽終端并綁定到容器的標(biāo)準(zhǔn)輸入上;
2)容器名稱為“php-running-script”进胯;
3)將主機(jī)目錄“D:\temp\php”加載為數(shù)據(jù)卷用爪,映射到容器內(nèi)目錄“/usr/src/myapp”。關(guān)于數(shù)據(jù)卷的相關(guān)講解胁镐,我們?cè)诤罄m(xù)的章節(jié)會(huì)結(jié)合相關(guān)實(shí)踐進(jìn)一步講解偎血;
4)指定工作目錄“/usr/src/myapp”;
5)執(zhí)行PHP腳本“test.php”。
構(gòu)建自己的WordPress鏡像用于搭建個(gè)人博客站點(diǎn)
WordPress是使用PHP語言開發(fā)的博客平臺(tái)盯漂,用戶可以在支持PHP和MySQL數(shù)據(jù)庫的服務(wù)器上架設(shè)屬于自己的網(wǎng)站颇玷。也可以把 WordPress當(dāng)作一個(gè)內(nèi)容管理系統(tǒng)(CMS)來使用。
WordPress是一款個(gè)人博客系統(tǒng)就缆,并逐步演化成一款內(nèi)容管理系統(tǒng)軟件帖渠,它是使用PHP語言和MySQL數(shù)據(jù)庫開發(fā)的,用戶可以在支持 PHP 和 MySQL數(shù)據(jù)庫的服務(wù)器上使用自己的博客竭宰。
WordPress官方鏡像地址為:https://hub.docker.com/_/wordpress
接下來空郊,我們就基于官方鏡像開始搭建。
1.準(zhǔn)備MySQL數(shù)據(jù)庫
我們先需要準(zhǔn)備一個(gè)MySQl數(shù)據(jù)庫切揭,大家可以使用現(xiàn)成的MySQL數(shù)據(jù)庫狞甚,也可以參考數(shù)據(jù)庫容器化的相關(guān)章節(jié)來進(jìn)行搭建。
參考命令如下所示:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456-p3306:3306-d mysql
注意:MySQL容器創(chuàng)建完成后廓旬,需要對(duì)root賬號(hào)進(jìn)行設(shè)置才能夠通過數(shù)據(jù)庫連接訪問MySQL哼审,具體見數(shù)據(jù)庫容器化相關(guān)章節(jié)。
2.跑起來
接下來孕豹,我們就可以運(yùn)行WordPress鏡像了涩盾,參考命令如下所示:
如上述命令,我們基于WordPressWordPress鏡像創(chuàng)建了一個(gè)名為myblog的容器巩步,外部端口為3000旁赊,容器端口為80。然后使用“--link”參數(shù)將該容器和mysql容器(上一步創(chuàng)建的MySQL容器)建立了鏈接椅野,是其能否訪問mysql容器终畅,并且建立了別名wordpressdb籍胯。接下來,通過環(huán)境變量設(shè)置了WordPress的MySQL的一些參數(shù)离福,比如數(shù)據(jù)庫服務(wù)器杖狼、密碼、庫名稱妖爷。運(yùn)行結(jié)果如下圖所示:
接下來蝶涩,我們?cè)L問我們的博客網(wǎng)址“http://localhost:3000/”試試:
經(jīng)過一些簡(jiǎn)單設(shè)置,我們又為WordPress添加了一個(gè)即將關(guān)站的博客站:
修改PHP的文件上傳大小限制
基于Docker運(yùn)行PHP應(yīng)用絮识,經(jīng)常會(huì)遇到文件上傳大小限制的問題绿聘。比如剛剛部署的WordPress個(gè)人博客站點(diǎn),如果我們上傳一些個(gè)人主題次舌,很容易就突破了PHP的文件上傳大小限制(默認(rèn)2M熄攘,對(duì)應(yīng)設(shè)置key為“upload_max_filesize”),這時(shí)我們有以下方式進(jìn)行處理:
1.修改Dockerfile彼念,構(gòu)建自己的鏡像
使用自己的php配置文件(php.ini)替換默認(rèn)的php配置文件挪圾。如基于wordpress鏡像構(gòu)建自己的鏡像,添加類似于“COPY ./config/php.ini /usr/local/etc/php/conf.d/”的復(fù)制命令逐沙。
2.通過“-v”參數(shù)將容器內(nèi)指定路徑映射到主機(jī)目錄的自定義的配置文件
例如“-v d:/tmp/php/php.ini:/usr/local/etc/php/conf.d/uploads.ini”哲思。