以前有寫過一篇 Docker 安裝部署 Swoft 的文章,但有些冗餘混亂,故重寫做爲教程的開篇。 要不讀讀看?
Swoft項目:https://github.com/swoft-clou...
Swoft文檔:https://doc.swoft.org/
Swoft鏡像:https://hub.docker.com/r/swof...php
首個基於 Swoole 原生協程的新時代 PHP 高性能協程全棧框架,內置協程網絡服務器及經常使用的協程客戶端,常駐內存,不依賴傳統的 PHP-FPM,全異步非阻塞 IO 實現,以相似於同步客戶端的寫法實現異步客戶端的使用,沒有複雜的異步回調,沒有繁瑣的 yield, 有相似 Go 語言的協程、靈活的註解、強大的全局依賴注入容器、完善的服務治理、靈活強大的 AOP、標準的 PSR 規範實現等等,能夠用於構建高性能的Web系統、API、中間件、基礎服務等等。git
即異步非阻塞IO,EventLoop,事件驅動。cpu_num 個 worker 便可承載高併發請求,提供協程/異步IO客戶端,數據庫鏈接池,對象鏈接池,任務進程池。優雅的註解聲明,IOC/DI容器,嚴格遵循PSR規範。
Swoft 官方提供了基於 Debine 的 Docker 鏡像。鏡像中已安裝配置好運行 Swoft 的所需組件及依賴:PHP 7.0+ / Swoole / Composer / Pecl。雖然不使用鏡像從頭安裝部署以上幾項組件也不難,但鏡像內置能夠開箱即用,免去了這些略繁瑣的工做,讓咱們儘量快的投入到 Swoft 的開發中去。github
此外docker
若是隻是單純的想快速體驗 Swoft,使用 docker run -p 80:80 swoft/swoft 拉取建立容器訪問便可。
如何正確的在 Swoft 項目的開發中使用鏡像呢?若是是要將鏡像好好利用到開發工做中,則須要清楚一下幾點。數據庫
好像咬到尾巴了,爲了開發須要掛載本地 Swoft 項目到鏡像工做目錄,由於容器啓動時還會一併啓動 Swoft 服務,因此要求掛載的本地 Swoft項目 必須使用 Composer 安裝好依賴,嗯?這不仍是得在本地裝 PHP + Composer 嘛,鏡像不是都提供了嘛,重複勞動了。vim
這樣就能充分利用鏡像內置的環境和工具,快樂的開始 Swoft 的開發了工做了,下面給出具體的實例。segmentfault
前面誇讚了那麼多鏡像的便利之處,下面若是不徹底把鏡像用到極致那就不太好了 O(∩_∩)O哈哈~bash
一、首先咱們從 github 上拉取最新的 Swoft 源碼到本地服務器
cd ~ && git clone git@github.com:swoft-cloud/swoft.git && cd swoft
二、查看 swoft 鏡像的 Dockerfile網絡
# 在文件尾設定了 entrypoint 命令爲 啓動 swoft服務 ENTRYPOINT ["php", "/var/www/swoft/bin/swoft", "start"]
entrypoint 就是咱們後面須要改掉的參數
三、直接使用鏡像建立容器
docker run \ -p 8081:80 \ #映射宿主機808 -v $(pwd):/var/www/swoft \#掛載本地 Swoft 項目到鏡像工做目錄 -it -d \ #重要 開啓 stdin tty 並以daemon模式運行 --entrypoint="" \#重要 覆蓋掉鏡像內設定的 entrypoint 參數 --name my_swoft \#容器命令 --privileges=true \#賦予權限 swoft/swoft bash
四、使用 docker-compose 更爲簡潔
#編輯 docker-compose 編排文件 vim docker-compose.yml #內容修改以下 version: '3' services: swoft: image: swoft/swoft:latest container_name: my_swoft # 給容器自定義個名稱便於管理 #build: ./ ports: - "8081:80" #端口映射 volumes: - ./:/var/www/swoft # 掛載本地swoft項目到鏡像工做目錄 stdin_open: true #打開標準輸出 -i tty: true # 打開 tty 會話 -t privileged: true # 給與權限 好比建立文件夾之類的 #entrypoint: ["php", "/var/www/swoft/bin/swoft", "start"] # 入口啓動命令 即啓動 swoft 服務 entrypoint: ["bash"]
建立容器
docker-compose up -d swoft ./
五、登入容器,安裝依賴,開啓 Swoft 服務
使用3或4建立的Swoft容器,便以 bash 做爲啓動的前置進程,而非啓動 Swoft 服務,咱們登入容器使用內置的 Composer 安裝依賴後,啓動Swoft服務便可。
docker exec -it my_swoft bash # 安裝框架依賴 composer install # 啓動/中止/重啓 Swoft 服務 php bin/swoft start|stop|restar
六、開啓熱重載,關閉 daemon,讓框架調試信息輸出到 stderr 方便開發調試
編輯本地的 Swoft 項目 .env 文件
# Application APP_DEBUG=true # Server ... AUTO_RELOAD=true ... # Swoole Settings ... DAEMONIZE=0 ...
保存並從新啓動 Swoft服務
小提示:能夠使用 PHPStorm IDE 配置 FTP/SFTP 文件改動自動上傳的方式,開發起飛~