Docker部署
Docker
是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的 Linux
或 Windows
機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
使用 Docker
部署前,需要用戶自行安裝Docker。
部署前必看
部分機(jī)器(例如 Docker
環(huán)境)在使用框架時(shí)遇到類似 DNS Lookup resolve failed...
錯(cuò)誤,請(qǐng)更換機(jī)器的 DNS
為阿里云公共 DNS 223.5.5.5
和 223.6.6.6
。具體更換步驟可查看 更換 DNS
啟動(dòng)容器
可以根據(jù)實(shí)際情況,映射到宿主機(jī)對(duì)應(yīng)的目錄,下面以宿主機(jī)目錄 /workspace/project
為例
如果 docker
啟動(dòng)時(shí)開啟了 selinux-enabled
選項(xiàng),容器內(nèi)訪問(wèn)宿主機(jī)資源就會(huì)受限,所以啟動(dòng)容器時(shí)可以增加 --privileged -u root
選項(xiàng)
# MacOS/Linux
docker run --name easyswoole \
-v /workspace/project:/var/www/project \
-p 9501:9501 -it \
--privileged -u root \
--entrypoint /bin/sh \
easyswoolexuesi2021/easyswoole:php8.1.22-alpine3.16-swoole4.8.13
# Windows
docker run --name easyswoole -v D:\workspace\easyswoole:/var/www -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh easyswoolexuesi2021/easyswoole:php8.1.22-alpine3.16-swoole4.8.13
上面利用 Docker
的映射功能,將宿主機(jī)目錄 /workspace/project
映射到容器 /var/www/project
中。方便我們?cè)谒拗鳈C(jī)開發(fā),容器內(nèi)進(jìn)行同步測(cè)試。
你可以根據(jù)需要選擇下面這些公共鏡像:
easyswoolexuesi2021/easyswoole:php8.1.22-alpine3.16-swoole4.8.13
easyswoolexuesi2021/easyswoole:php8.1.22-alpine3.16-swoole5.1.1
easyswoolexuesi2021/easyswoole:php8.2.8-alpine3.18-swoole4.8.13
easyswoolexuesi2021/easyswoole:php8.2.8-alpine3.18-swoole5.1.1
easyswoolexuesi2021/easyswoole:php8.2.14-alpine3.19-swoole4.8.13
easyswoolexuesi2021/easyswoole:php8.2.14-alpine3.19-swoole5.1.1
上述鏡像都是基于 alpine
系統(tǒng)制作的,是比較輕量級(jí)的,適合生產(chǎn)環(huán)境部署。后續(xù)我們還會(huì)考慮支持 centos
、ubuntu
、debian
等系統(tǒng)用于制作鏡像,敬請(qǐng)期待。如果您想自定義鏡像,可查看我們提供的 dockerfiles
倉(cāng)庫(kù),國(guó)內(nèi) Gitea easyswoole/docker,Github easyswoole/docker。
創(chuàng)建項(xiàng)目
進(jìn)入容器。
docker exec -it easyswoole bash
創(chuàng)建項(xiàng)目。
cd /var/www/project
composer require easyswoole/easyswoole
php vendor/bin/easyswoole.php install
# php vendor/bin/easyswoole install # 當(dāng)你項(xiàng)目中的 EasySwoole 框架本低于 3.7.1 時(shí)
注意,在部分環(huán)境下,例如 Win10
系統(tǒng)的 docker
環(huán)境。
不可把虛擬機(jī)共享目錄作為 EasySwoole
的 Temp
目錄,將會(huì)因?yàn)闄?quán)限不足無(wú)法創(chuàng)建 socket
。這將產(chǎn)生報(bào)錯(cuò):listen xxxxxx.sock fail
, 為此可以手動(dòng)在 dev.php
配置文件里把 Temp
目錄(TEMP_DIR
配置項(xiàng))改為其他路徑即可,如:'/tmp'
。
啟動(dòng)項(xiàng)目
cd /var/www/project
php easyswoole.php server start
# php easyswoole server start # 當(dāng)你項(xiàng)目中的 EasySwoole 框架本低于 3.7.1 時(shí)
接下來(lái),就可以在宿主機(jī) /var/www/project
中看到您安裝好的代碼了。 由于 EasySwoole
是持久化的 CLI 框架,當(dāng)您修改完您的代碼后,通過(guò) CTRL + C
終止當(dāng)前啟動(dòng)的進(jìn)程實(shí)例,并重新執(zhí)行 php easyswoole.php server start
啟動(dòng)命令即可。
上述命令執(zhí)行完成后,宿主機(jī)瀏覽器訪問(wèn) http://127.0.0.1:9501/
即可看到歡迎頁(yè)。如果訪問(wèn)歡迎頁(yè)遇到如下情形:not controller class match
,請(qǐng)進(jìn)入容器重新執(zhí)行安裝命令 php easyswoole.php install
,并且輸入 Y
、Y
,再次執(zhí)行 php easyswoole.php server start
啟動(dòng)服務(wù),就可以正常訪問(wèn)歡迎頁(yè)了,詳見 框架安裝。