资讯专栏INFORMATION COLUMN

Swoft 系列教程:(1)使用 Docker 安装部署 Swoft

宋华 / 721人阅读

摘要:即异步非阻塞,,事件驱动。优雅的注解声明,容器,严格遵循规范。镜像的主要用途官方提供了基于的镜像。镜像中已安装配置好运行的所需组件及依赖。修改镜像的使得容器启动时不同时启动服务,这就不需要要求我们挂载的本地项目必须完全安装好依赖了。

之前有写过一篇 Docker 安装部署 Swoft 的文章,但有些冗余混乱,故重写作为教程的开篇。要不读读看?

Swoft项目:https://github.com/swoft-clou...
Swoft文档:https://doc.swoft.org/
Swoft镜像:https://hub.docker.com/r/swof...

Swoft 简介

首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM,全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield, 有类似 Go 语言的协程、灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等。

即异步非阻塞IO,EventLoop,事件驱动。cpu_num 个 worker 即可承载高并发请求,提供协程/异步IO客户端,数据库连接池,对象连接池,任务进程池。优雅的注解声明,IOC/DI容器,严格遵循PSR规范。
Swoft 镜像的主要用途

Swoft 官方提供了基于 Debine 的 Docker 镜像。镜像中已安装配置好运行 Swoft 的所需组件及依赖:PHP 7.0+ / Swoole / Composer / Pecl。虽然不使用镜像从头安装部署以上几项组件也不难,但镜像内置可以开箱即用,免去了这些略繁琐的工作,让我们尽可能快的投入到 Swoft 的开发中去。

此外

Swoft 镜像与开发的配合
如果只是单纯的想快速体验 Swoft,使用 docker run -p 80:80 swoft/swoft 拉取创建容器访问即可。

如何正确的在 Swoft 项目的开发中使用镜像呢?如果是要将镜像好好利用到开发工作中,则需要清楚一下几点。

镜像内置完全安装的 Swoft 框架,但它只是用来快速演示的,并不是要你拿去修改,开发还是要对本地的 Swoft 项目开发。

我们应该做的是将本地的 Swoft 框架 挂载到镜像的工作目录 /var/www/swoft 从而替换掉镜像自带的,这样启动 Swoft服务 就会启动映射到本地的 Swoft 项目了

镜像的容器启动时默认会启动 Swoft 服务 作为前置进程,这就要求我们在挂载了本地 Swoft 项目时需要保证已完全安装了各项依赖(github 拉取下来的 Swoft 源码 并没有安装库依赖,需要使用 Composer install 一下)

好像咬到尾巴了,为了开发需要挂载本地 Swoft 项目到镜像工作目录,因为容器启动时还会一并启动 Swoft 服务,所以要求挂载的本地 Swoft项目 必须使用 Composer 安装好依赖,嗯?这不还是得在本地装 PHP + Composer 嘛,镜像不是都提供了嘛,重复劳动了。

修改 Swoft 镜像的 entrypoint 使得 Swoft 容器启动时不同时启动 Swoft 服务,这就不需要要求我们挂载的本地 Swoft 项目必须完全安装好依赖了。

容器创建好后,登入容器 sh,使用镜像内置的 Composer 安装依赖

启动 Swoft 服务

这样就能充分利用镜像内置的环境和工具,快乐的开始 Swoft 的开发了工作了,下面给出具体的实例。

Swoft 镜像的使用

前面夸赞了那么多镜像的便利之处,下面如果不完全把镜像用到极致那就不太好了 O(∩_∩)O哈哈~

1、首先我们从 github 上拉取最新的 Swoft 源码到本地

cd ~ && git clone git@github.com:swoft-cloud/swoft.git && cd swoft

2、查看 swoft 镜像的 Dockerfile

# 在文件尾设定了 entrypoint 命令为 启动 swoft服务
ENTRYPOINT ["php", "/var/www/swoft/bin/swoft", "start"]

entrypoint 就是我们后面需要改掉的参数

3、直接使用镜像创建容器

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

4、使用 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 ./

5、登入容器,安装依赖,开启 Swoft 服务
使用3或4创建的Swoft容器,便以 bash 作为启动的前置进程,而非启动 Swoft 服务,我们登入容器使用内置的 Composer 安装依赖后,启动Swoft服务即可。

docker exec -it my_swoft bash
# 安装框架依赖
composer install
# 启动/停止/重启 Swoft 服务
php bin/swoft start|stop|restar

6、开启热重载,关闭 daemon,让框架调试信息输出到 stderr 方便开发调试
编辑本地的 Swoft 项目 .env 文件

# Application
APP_DEBUG=true
# Server
...
AUTO_RELOAD=true
...
# Swoole Settings
...
DAEMONIZE=0
...

保存并重新启动 Swoft服务

小提示:可以使用 PHPStorm IDE 配置 FTP/SFTP 文件改动自动上传的方式,开发起飞~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30151.html

相关文章

  • Swoft 系列教程:(1使用 Docker 安装部署 Swoft

    摘要:即异步非阻塞,,事件驱动。优雅的注解声明,容器,严格遵循规范。镜像的主要用途官方提供了基于的镜像。镜像中已安装配置好运行的所需组件及依赖。修改镜像的使得容器启动时不同时启动服务,这就不需要要求我们挂载的本地项目必须完全安装好依赖了。 之前有写过一篇 Docker 安装部署 Swoft 的文章,但有些冗余混乱,故重写作为教程的开篇。要不读读看? Swoft项目:https://gith...

    psychola 评论0 收藏0
  • Swoft 新手向教程 - 通过 Docker 搭建一个开发环境

    摘要:前言是一个在之上构建的一个高性能协程全栈框架,而在里面是一个高级技能,所以在相关的环境安装上也给许多人造成了很大的困扰,更是如此,本文将通过以一种极其简单的方式解决运行环境和开发环境的部署。 showImg(https://segmentfault.com/img/bVbeknK?w=512&h=197); 本系列文章将从使用层面介绍 Swoft 框架的使用及业务开发,面向初中级的 P...

    tinysun1234 评论0 收藏0
  • 使用 Docker / Docker Compose 部署 Swoft 应用

    摘要:所以呢,为了节省我们的时间,官方提供了一个镜像包,里面包含了运行环境所需要的各项组件我们只需要下载镜像并新建一个容器,这个容器就提供了框架所需的所有依赖和环境,将宿主机上的项目挂载到镜像的工作目录下,就可以继续我们的开发或生产工作了。 Swoft 首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-...

    gplane 评论0 收藏0
  • 使用 Docker / Docker Compose 部署 Swoft 应用

    摘要:所以呢,为了节省我们的时间,官方提供了一个镜像包,里面包含了运行环境所需要的各项组件我们只需要下载镜像并新建一个容器,这个容器就提供了框架所需的所有依赖和环境,将宿主机上的项目挂载到镜像的工作目录下,就可以继续我们的开发或生产工作了。 Swoft 首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-...

    chaos_G 评论0 收藏0
  • swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? docker 了解

    摘要:源码解读系列一好难都跑不起来怎么破了解一下呗阅读框架源码第一步搞定环境小伙伴刚接触的时候会感觉压力有点大更直观的说法是难开发组是不赞成难这个说法的的代码都是实现的而又是世界上最好的语言的代码阅读起来是很轻松的开发组会用源码解读系列博客深 date: 2018-8-01 14:22:17title: swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? doc...

    shenhualong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<