摘要:即異步非阻塞,,事件驅(qū)動(dòng)。優(yōu)雅的注解聲明,容器,嚴(yán)格遵循規(guī)范。鏡像的主要用途官方提供了基于的鏡像。鏡像中已安裝配置好運(yùn)行的所需組件及依賴。修改鏡像的使得容器啟動(dòng)時(shí)不同時(shí)啟動(dòng)服務(wù),這就不需要要求我們掛載的本地項(xiàng)目必須完全安裝好依賴了。
之前有寫(xiě)過(guò)一篇 Docker 安裝部署 Swoft 的文章,但有些冗余混亂,故重寫(xiě)作為教程的開(kāi)篇。要不讀讀看?
Swoft項(xiàng)目:https://github.com/swoft-clou...
Swoft文檔:https://doc.swoft.org/
Swoft鏡像:https://hub.docker.com/r/swof...
首個(gè)基于 Swoole 原生協(xié)程的新時(shí)代 PHP 高性能協(xié)程全??蚣埽瑑?nèi)置協(xié)程網(wǎng)絡(luò)服務(wù)器及常用的協(xié)程客戶端,常駐內(nèi)存,不依賴傳統(tǒng)的 PHP-FPM,全異步非阻塞 IO 實(shí)現(xiàn),以類似于同步客戶端的寫(xiě)法實(shí)現(xiàn)異步客戶端的使用,沒(méi)有復(fù)雜的異步回調(diào),沒(méi)有繁瑣的 yield, 有類似 Go 語(yǔ)言的協(xié)程、靈活的注解、強(qiáng)大的全局依賴注入容器、完善的服務(wù)治理、靈活強(qiáng)大的 AOP、標(biāo)準(zhǔn)的 PSR 規(guī)范實(shí)現(xiàn)等等,可以用于構(gòu)建高性能的Web系統(tǒng)、API、中間件、基礎(chǔ)服務(wù)等等。
即異步非阻塞IO,EventLoop,事件驅(qū)動(dòng)。cpu_num 個(gè) worker 即可承載高并發(fā)請(qǐng)求,提供協(xié)程/異步IO客戶端,數(shù)據(jù)庫(kù)連接池,對(duì)象連接池,任務(wù)進(jìn)程池。優(yōu)雅的注解聲明,IOC/DI容器,嚴(yán)格遵循PSR規(guī)范。Swoft 鏡像的主要用途
Swoft 官方提供了基于 Debine 的 Docker 鏡像。鏡像中已安裝配置好運(yùn)行 Swoft 的所需組件及依賴:PHP 7.0+ / Swoole / Composer / Pecl。雖然不使用鏡像從頭安裝部署以上幾項(xiàng)組件也不難,但鏡像內(nèi)置可以開(kāi)箱即用,免去了這些略繁瑣的工作,讓我們盡可能快的投入到 Swoft 的開(kāi)發(fā)中去。
此外
Swoft 鏡像與開(kāi)發(fā)的配合如果只是單純的想快速體驗(yàn) Swoft,使用 docker run -p 80:80 swoft/swoft 拉取創(chuàng)建容器訪問(wèn)即可。
如何正確的在 Swoft 項(xiàng)目的開(kāi)發(fā)中使用鏡像呢?如果是要將鏡像好好利用到開(kāi)發(fā)工作中,則需要清楚一下幾點(diǎn)。
鏡像內(nèi)置完全安裝的 Swoft 框架,但它只是用來(lái)快速演示的,并不是要你拿去修改,開(kāi)發(fā)還是要對(duì)本地的 Swoft 項(xiàng)目開(kāi)發(fā)。
我們應(yīng)該做的是將本地的 Swoft 框架 掛載到鏡像的工作目錄 /var/www/swoft 從而替換掉鏡像自帶的,這樣啟動(dòng) Swoft服務(wù) 就會(huì)啟動(dòng)映射到本地的 Swoft 項(xiàng)目了
鏡像的容器啟動(dòng)時(shí)默認(rèn)會(huì)啟動(dòng) Swoft 服務(wù) 作為前置進(jìn)程,這就要求我們?cè)趻燧d了本地 Swoft 項(xiàng)目時(shí)需要保證已完全安裝了各項(xiàng)依賴(github 拉取下來(lái)的 Swoft 源碼 并沒(méi)有安裝庫(kù)依賴,需要使用 Composer install 一下)
好像咬到尾巴了,為了開(kāi)發(fā)需要掛載本地 Swoft 項(xiàng)目到鏡像工作目錄,因?yàn)槿萜鲉?dòng)時(shí)還會(huì)一并啟動(dòng) Swoft 服務(wù),所以要求掛載的本地 Swoft項(xiàng)目 必須使用 Composer 安裝好依賴,嗯?這不還是得在本地裝 PHP + Composer 嘛,鏡像不是都提供了嘛,重復(fù)勞動(dòng)了。
修改 Swoft 鏡像的 entrypoint 使得 Swoft 容器啟動(dòng)時(shí)不同時(shí)啟動(dòng) Swoft 服務(wù),這就不需要要求我們掛載的本地 Swoft 項(xiàng)目必須完全安裝好依賴了。
容器創(chuàng)建好后,登入容器 sh,使用鏡像內(nèi)置的 Composer 安裝依賴
啟動(dòng) Swoft 服務(wù)
這樣就能充分利用鏡像內(nèi)置的環(huán)境和工具,快樂(lè)的開(kāi)始 Swoft 的開(kāi)發(fā)了工作了,下面給出具體的實(shí)例。
Swoft 鏡像的使用前面夸贊了那么多鏡像的便利之處,下面如果不完全把鏡像用到極致那就不太好了 O(∩_∩)O哈哈~
1、首先我們從 github 上拉取最新的 Swoft 源碼到本地
cd ~ && git clone [email protected]:swoft-cloud/swoft.git && cd swoft
2、查看 swoft 鏡像的 Dockerfile
# 在文件尾設(shè)定了 entrypoint 命令為 啟動(dòng) swoft服務(wù) ENTRYPOINT ["php", "/var/www/swoft/bin/swoft", "start"]
entrypoint 就是我們后面需要改掉的參數(shù)
3、直接使用鏡像創(chuàng)建容器
docker run -p 8081:80 #映射宿主機(jī)808 -v $(pwd):/var/www/swoft #掛載本地 Swoft 項(xiàng)目到鏡像工作目錄 -it -d #重要 開(kāi)啟 stdin tty 并以daemon模式運(yùn)行 --entrypoint="" #重要 覆蓋掉鏡像內(nèi)設(shè)定的 entrypoint 參數(shù) --name my_swoft #容器命令 --privileges=true #賦予權(quán)限 swoft/swoft bash
4、使用 docker-compose 更為簡(jiǎn)潔
#編輯 docker-compose 編排文件 vim docker-compose.yml #內(nèi)容修改如下 version: "3" services: swoft: image: swoft/swoft:latest container_name: my_swoft # 給容器自定義個(gè)名稱便于管理 #build: ./ ports: - "8081:80" #端口映射 volumes: - ./:/var/www/swoft # 掛載本地swoft項(xiàng)目到鏡像工作目錄 stdin_open: true #打開(kāi)標(biāo)準(zhǔn)輸出 -i tty: true # 打開(kāi) tty 會(huì)話 -t privileged: true # 給與權(quán)限 比如創(chuàng)建文件夾之類的 #entrypoint: ["php", "/var/www/swoft/bin/swoft", "start"] # 入口啟動(dòng)命令 即啟動(dòng) swoft 服務(wù) entrypoint: ["bash"]
創(chuàng)建容器
docker-compose up -d swoft ./
5、登入容器,安裝依賴,開(kāi)啟 Swoft 服務(wù)
使用3或4創(chuàng)建的Swoft容器,便以 bash 作為啟動(dòng)的前置進(jìn)程,而非啟動(dòng) Swoft 服務(wù),我們登入容器使用內(nèi)置的 Composer 安裝依賴后,啟動(dòng)Swoft服務(wù)即可。
docker exec -it my_swoft bash # 安裝框架依賴 composer install # 啟動(dòng)/停止/重啟 Swoft 服務(wù) php bin/swoft start|stop|restar
6、開(kāi)啟熱重載,關(guān)閉 daemon,讓框架調(diào)試信息輸出到 stderr 方便開(kāi)發(fā)調(diào)試
編輯本地的 Swoft 項(xiàng)目 .env 文件
# Application APP_DEBUG=true # Server ... AUTO_RELOAD=true ... # Swoole Settings ... DAEMONIZE=0 ...
保存并重新啟動(dòng) Swoft服務(wù)
小提示:可以使用 PHPStorm IDE 配置 FTP/SFTP 文件改動(dòng)自動(dòng)上傳的方式,開(kāi)發(fā)起飛~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/30151.html
摘要:即異步非阻塞,,事件驅(qū)動(dòng)。優(yōu)雅的注解聲明,容器,嚴(yán)格遵循規(guī)范。鏡像的主要用途官方提供了基于的鏡像。鏡像中已安裝配置好運(yùn)行的所需組件及依賴。修改鏡像的使得容器啟動(dòng)時(shí)不同時(shí)啟動(dòng)服務(wù),這就不需要要求我們掛載的本地項(xiàng)目必須完全安裝好依賴了。 之前有寫(xiě)過(guò)一篇 Docker 安裝部署 Swoft 的文章,但有些冗余混亂,故重寫(xiě)作為教程的開(kāi)篇。要不讀讀看? Swoft項(xiàng)目:https://gith...
摘要:前言是一個(gè)在之上構(gòu)建的一個(gè)高性能協(xié)程全??蚣?,而在里面是一個(gè)高級(jí)技能,所以在相關(guān)的環(huán)境安裝上也給許多人造成了很大的困擾,更是如此,本文將通過(guò)以一種極其簡(jiǎn)單的方式解決運(yùn)行環(huán)境和開(kāi)發(fā)環(huán)境的部署。 showImg(https://segmentfault.com/img/bVbeknK?w=512&h=197); 本系列文章將從使用層面介紹 Swoft 框架的使用及業(yè)務(wù)開(kāi)發(fā),面向初中級(jí)的 P...
摘要:所以呢,為了節(jié)省我們的時(shí)間,官方提供了一個(gè)鏡像包,里面包含了運(yùn)行環(huán)境所需要的各項(xiàng)組件我們只需要下載鏡像并新建一個(gè)容器,這個(gè)容器就提供了框架所需的所有依賴和環(huán)境,將宿主機(jī)上的項(xiàng)目掛載到鏡像的工作目錄下,就可以繼續(xù)我們的開(kāi)發(fā)或生產(chǎn)工作了。 Swoft 首個(gè)基于 Swoole 原生協(xié)程的新時(shí)代 PHP 高性能協(xié)程全??蚣?,內(nèi)置協(xié)程網(wǎng)絡(luò)服務(wù)器及常用的協(xié)程客戶端,常駐內(nèi)存,不依賴傳統(tǒng)的 PHP-...
摘要:所以呢,為了節(jié)省我們的時(shí)間,官方提供了一個(gè)鏡像包,里面包含了運(yùn)行環(huán)境所需要的各項(xiàng)組件我們只需要下載鏡像并新建一個(gè)容器,這個(gè)容器就提供了框架所需的所有依賴和環(huán)境,將宿主機(jī)上的項(xiàng)目掛載到鏡像的工作目錄下,就可以繼續(xù)我們的開(kāi)發(fā)或生產(chǎn)工作了。 Swoft 首個(gè)基于 Swoole 原生協(xié)程的新時(shí)代 PHP 高性能協(xié)程全??蚣?,內(nèi)置協(xié)程網(wǎng)絡(luò)服務(wù)器及常用的協(xié)程客戶端,常駐內(nèi)存,不依賴傳統(tǒng)的 PHP-...
摘要:源碼解讀系列一好難都跑不起來(lái)怎么破了解一下唄閱讀框架源碼第一步搞定環(huán)境小伙伴剛接觸的時(shí)候會(huì)感覺(jué)壓力有點(diǎn)大更直觀的說(shuō)法是難開(kāi)發(fā)組是不贊成難這個(gè)說(shuō)法的的代碼都是實(shí)現(xiàn)的而又是世界上最好的語(yǔ)言的代碼閱讀起來(lái)是很輕松的開(kāi)發(fā)組會(huì)用源碼解讀系列博客深 date: 2018-8-01 14:22:17title: swoft| 源碼解讀系列一: 好難! swoft demo 都跑不起來(lái)怎么破? doc...
閱讀 3118·2021-11-18 10:02
閱讀 2627·2021-10-13 09:47
閱讀 3073·2021-09-22 15:07
閱讀 805·2019-08-30 15:43
閱讀 1821·2019-08-30 10:59
閱讀 1701·2019-08-29 15:34
閱讀 1713·2019-08-29 15:06
閱讀 453·2019-08-29 13:28