在CentOs7下构建swoft开发环境并打包成docker镜像

在CentOs7下构建swoft开发环境并打包成docker镜像

这篇文章我们需要使用docker创建可运行swoft的镜像,为什么非要使用docker呢?因为swoft是基于swoole扩展开发出来的微服务协程框架,那么我们的电脑上必须要先安装swoole扩展,不巧的是,发现swoole现阶段是不支持在windows下安装的,所以我们就用到了docker,为了方便,便于管理,我们直接将开发环境打包上传到了docker仓库中

一.docker拉取centos镜像并运行容器

docker pull 镜像名称 例如:docker pull centos,如下图中的命令行,可以看到centos的镜像已经被拉取,我们在用命令docker images,便可以看到我们本地的镜像。
在CentOs7下构建swoft开发环境并打包成docker镜像_第1张图片
在CentOs7下构建swoft开发环境并打包成docker镜像_第2张图片
接下来我们使用命令docker run -it --name 【容器名称】【镜像名称】 bash,创建并启动容器(centos1为我们为容器的命名,而centos则是我们刚刚拉取的镜像)。
在这里插入图片描述
有关docker的常用容器命令除上述我用到的之外:
docker stop 容器名称 停止容器
docker start 容器名称 启动容器
docker restart 容器名称 重启容器
docker exec -i 容器名称 进入运行中的容器
exit 退出容器

此时我们就等于创建了一个linux系统,接下俩就可以在这个容器中(相当于一个新的centos系统的电脑)安装我们的开发环境。

二.在CentOS 7上安装PHP 7.4版本

1.添加EPEL和REMI存储库

首先我们运行如下命令添加所需要的存储库:

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

2.开始安装php7.4版本

启用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

三.在CentOS 7上安装php的redis扩展

安装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

四.在CentOS 7上安装swoole扩展

openssl是一套描述文件处理、加密算法和其他信息技术标准的开放源代码的软件库包:

yum install openssl

安装swoole扩展

pecl install https://pecl.php.net/get/swoole-4.4.19.tgz

五.安装composer

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的仓库中,如下图所示:
在CentOs7下构建swoft开发环境并打包成docker镜像_第3张图片

上传到仓库后,我们便可以使用前面的命令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

七.swoft常用命令

热更新启动:

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!
在CentOs7下构建swoft开发环境并打包成docker镜像_第4张图片

上述就为swoft需要的开发环境安装以及搭建,如果有需要的小伙伴可以尝试着在docker上自己搭建一个开发环境,上述内容亲测有效,并且我们的项目也在不断的运转,离上次发表文章已经有很长时间,后面我会更新的快一点,自己有技术上的问题,解决之后也会跟大家分享,如果文章能帮到你,请给我们点个赞,谢谢大家了!一直在路上,从未停歇过!

你可能感兴趣的:(Docker,Swoft,docker,centos,php)