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