以前有写过一篇 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 文件改动自动上传的方式,开发起飞~