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 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

  1. FROM centos:8
  2. #version defined
  3. ENV SWOOLE_VERSION 4.4.23
  4. ENV EASYSWOOLE_VERSION 3.4.x
  5. #install libs
  6. RUN yum install -y curl zip unzip wget openssl-devel gcc-c++ make autoconf git
  7. #install php
  8. RUN yum install -y php-devel php-openssl php-mbstring php-json php-simplexml
  9. # composer
  10. RUN curl -sS https://getcomposer.org/installer | php \
  11. && mv composer.phar /usr/bin/composer && chmod +x /usr/bin/composer
  12. # use aliyun composer 由于最近阿里云镜像不稳定,废弃使用
  13. # RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  14. # swoole ext
  15. RUN wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O swoole.tar.gz \
  16. && mkdir -p swoole \
  17. && tar -xf swoole.tar.gz -C swoole --strip-components=1 \
  18. && rm swoole.tar.gz \
  19. && ( \
  20. cd swoole \
  21. && phpize \
  22. && ./configure --enable-openssl \
  23. && make \
  24. && make install \
  25. ) \
  26. && sed -i "2i extension=swoole.so" /etc/php.ini \
  27. && rm -r swoole
  28. # Dir
  29. WORKDIR /easyswoole
  30. # install easyswoole
  31. RUN cd /easyswoole \
  32. && composer require easyswoole/easyswoole=${EASYSWOOLE_VERSION} \
  33. && php vendor/easyswoole/easyswoole/bin/easyswoole install
  34. EXPOSE 9501