Docker部署

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 LinuxWindows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

使用 Docker 部署前,需要用户自行安装Docker

部署前必看

部分机器(例如 Docker 环境)在使用框架时遇到类似 DNS Lookup resolve failed... 错误,请更换机器的 DNS 为阿里云公共 DNS 223.5.5.5223.6.6.6。具体更换步骤可查看 更换 DNS

镜像拉取

请在终端执行以下命令

docker pull easyswoole/easyswoole3

docker hub上的环境为 php7.2 + swoole4.4.23 + easyswoole 3.4.x

框架启动

docker run -ti -p 9501:9501 easyswoole/easyswoole3

默认工作目录为: /easyswoole
命令执行完成,自动进入工作目录,执行 php easyswoole server start 启动服务,宿主机浏览器访问 http://127.0.0.1:9501/ 即可看到欢迎页。如果访问欢迎页遇到如下情形:not controller class match,请重新执行安装命令 php easyswoole install,并且输入 YY,再次执行 php easyswoole server start 启动服务,就可以正常访问欢迎页了,详见 框架安装

如何开发

可以利用 Docker 的映射功能,将宿主机目录映射到容器中。在被映射的目录中根据框架安装文档重新安装 easyswoole。在宿主机开发,容器内进行同步测试。

注意,在部分环境下,例如 Win10 系统的 docker 环境。
不可把虚拟机共享目录作为 EasySwooleTemp 目录,将会因为权限不足无法创建socket。这将产生报错:listen xxxxxx.sock fail, 为此可以手动在dev.php 配置文件里把 Temp 目录改为其他路径即可,如:'/Tmp'

Dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

FROM centos:8

#version defined
ENV SWOOLE_VERSION 4.4.23
ENV EASYSWOOLE_VERSION 3.4.x

#install libs
RUN yum install -y curl zip unzip  wget openssl-devel gcc-c++ make autoconf git
#install php
RUN yum install -y php-devel php-openssl php-mbstring php-json php-simplexml
# composer
RUN curl -sS https://getcomposer.org/installer | php \
    && mv composer.phar /usr/bin/composer && chmod +x /usr/bin/composer
# use aliyun composer 由于最近阿里云镜像不稳定,废弃使用
# RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

# swoole ext
RUN wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O swoole.tar.gz \
    && mkdir -p swoole \
    && tar -xf swoole.tar.gz -C swoole --strip-components=1 \
    && rm swoole.tar.gz \
    && ( \
    cd swoole \
    && phpize \
    && ./configure --enable-openssl \
    && make \
    && make install \
    ) \
    && sed -i "2i extension=swoole.so" /etc/php.ini \
    && rm -r swoole

# Dir
WORKDIR /easyswoole
# install easyswoole
RUN cd /easyswoole \
    && composer require easyswoole/easyswoole=${EASYSWOOLE_VERSION} \
    && php vendor/easyswoole/easyswoole/bin/easyswoole install

EXPOSE 9501