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.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
系統制作的,是比較輕量級的,適合生產環境部署。后續我們還會考慮支持 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
啟動服務,就可以正常訪問歡迎頁了,詳見 框架安裝。