这篇文章我们需要使用docker创建可运行swoft的镜像,为什么非要使用docker呢?因为swoft是基于swoole扩展开发出来的微服务协程框架,那么我们的电脑上必须要先安装swoole扩展,不巧的是,发现swoole现阶段是不支持在windows下安装的,所以我们就用到了docker,为了方便,便于管理,我们直接将开发环境打包上传到了docker仓库中
docker pull 镜像名称 例如:docker pull centos
,如下图中的命令行,可以看到centos的镜像已经被拉取,我们在用命令docker images
,便可以看到我们本地的镜像。
接下来我们使用命令docker run -it --name 【容器名称】【镜像名称】 bash
,创建并启动容器(centos1为我们为容器的命名,而centos则是我们刚刚拉取的镜像)。
有关docker的常用容器命令除上述我用到的之外:
docker stop 容器名称
停止容器
docker start 容器名称
启动容器
docker restart 容器名称
重启容器
docker exec -i 容器名称
进入运行中的容器
exit
退出容器
此时我们就等于创建了一个linux系统,接下俩就可以在这个容器中(相当于一个新的centos系统的电脑)安装我们的开发环境。
首先我们运行如下命令添加所需要的存储库:
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
启用PHP 7.4 Remi存储库并在CentOS 7上安装PHP 7.4:
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php74
sudo yum update
在CentOS 7上安装PHP 7.4 以及扩展:
sudo yum install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
查看php版本:
php -v
如果要查看启用的模块,请运行:
php --modules
安装redis扩展时的做法网上有很多种,下面这种时老大在无数的推演后简化下来的方法(这里要说明的是,php的安装是属于爸爸的,我们的开发环境是以php为基础,然后再在其上面添加一些扩展,相当于他的儿子,如redis,这样我们就可以使用了,因为有人会误解为在centos上安装redis,但我们的开发环境是以php为基准的)
首先介绍下pecl,pecl是一个开放的并通过 PEAR打包格式来打包安装的 PHP 扩展库仓库,我们通过这个命令进行安装igbinary,igbinary 是一个 php 的第三方扩展,相对于 php 自带的 serialize,igbinary 具有性能高,节省空间的特点
pecl install igbinary
librdkafka(kafka消息中间件的C/C++客户端实现)的编译依赖zlib-devel库,需要预先安装zlib-devel,这里我们的开发需要用到kafka:
yum -y install libzstd-devel
lzf则是php函数中的压缩与归档扩展,在此需要,我们进行安装:
pecl install lzf
zstd是一款免费的开源,快速实时数据压缩程序,具有更好的压缩比 (约为 10:1)工具:
pecl install zstd
安装redis:
pecl install redis
最后进入"/etc/php.d/"文件夹中,创建一个redis.ini文件,内容如下:extension=redis.so
openssl是一套描述文件处理、加密算法和其他信息技术标准的开放源代码的软件库包:
yum install openssl
安装swoole扩展
pecl install https://pecl.php.net/get/swoole-4.4.19.tgz
Composer简单来说是一个新的安装包管理工具,服务于 PHP 生态系统
1.下载安装脚本
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
2.执行安装
php composer-setup.php
3.删除安装脚本
php -r "unlink('composer-setup.php');"
4.全局安装
sudo mv composer.phar /usr/local/bin/composer
5.修改源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
docker commit -m 【提交时的说明文字】 -a 【提交的镜像作者】 【容器id或者名称】【镜像的仓库名】
上述命令执行后,会在我们的docker上生成一个全新的镜像,这个时候我们就可以把它推到dockerHub的仓库中,如下图所示:
上传到仓库后,我们便可以使用前面的命令docker pull xxx 来拉取镜像,拉取镜像后,需要挂载到本地目录,命令如下:
docker run -it -p 18306:18306 -v 【所需要挂载到的本地的目录】–name 【容器的名称】 【镜像名称】 /bin/bash
-p:需要挂载运行到的端口号,swoft一般是18306
-v:你自己所需要挂载到的本地的目录
–name:你的容器的名称
renfa/myswoft则为我们拉取的镜像名称
例如:
docker run -it -p 18306:18306 -v /Applications/project/php/new_api:/var/www/new_api --name new_api renfa/myswoft /bin/bash
热更新启动:
swoftcli run -c http:start -b bin/swoft
生成数据库迁移文件:
php bin/swoft migrate:create [迁移文件名称]
执行迁移文件:
php bin/swoft migrate:up
回滚迁移文件:
php bin/swoft migrate:down
创建实体类(不指定表名则生成全部):
php bin/swoft entity:gen [表名] -y
创建http中间件:
swoftcli gen:httpmdl [中间件名称] -y
如果有看不懂的小伙伴,欢迎评论留言,我们会尽力回答你的问题,如果急需要一个开发环境,下图为老大的dockerHub仓库,大家直接拉去myswoft的开发环境便可以使用swoft!
上述就为swoft需要的开发环境安装以及搭建,如果有需要的小伙伴可以尝试着在docker上自己搭建一个开发环境,上述内容亲测有效,并且我们的项目也在不断的运转,离上次发表文章已经有很长时间,后面我会更新的快一点,自己有技术上的问题,解决之后也会跟大家分享,如果文章能帮到你,请给我们点个赞,谢谢大家了!一直在路上,从未停歇过!