Docker 下开发 hyperf 完整使用示例

Hyperf 官方网站
Hyperf 官方文档安装篇

1. docker 使用

  • TimAutumnWind (转载请注明出处 https://learnku.com/articles/39442)
  • docker search 列出 hyperf 镜像
  • docker pull 下载镜像到本地
  • 运行 镜像并且将目录挂载到当前目录下文件夹 内,同时依照 /bin/sh 的方式运行
  • 如果需要多开终端可以使用 docker exec -it (CONTAINER ID) /bin/sh 这种方式进入
  • (CONTAINER ID) 可以使用 docker ps 查看当前运行的 docker 镜像
  • 9501:9501 (如果本地需要变更可以改为 变更端口:hyperf运行端口)
  • 前一个 9501 是本地访问的端口,后一个 9501 是镜像内 hyperf 定义的端口
  • 进入到 hyperf-skeleton 目录,此目录是和本地挂靠的
    $ docker search hyperf 
    $ docker pull hyperf/hyperf 
    $ docker run -v $PWD/:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh  hyperf/hyperf
    $ cd hyperf-skeleton

2. 镜像容器运行后,并在容器内安装 Composer

  • 先下载 Composerdocker 容器内
    $ wget https://mirrors.aliyun.com/composer/composer.phar

3.修改执行权限

  • 此操作是为了解决 Composer 不允许 root 权限执行的限制
  • 同时为切换用户时,可以直接操作
  • 生产环境下不推荐 777 授权方式
    $ chmod -R 777 ./composer.phar

4.移动 composerbin 目录下面,并且改名为 composer

  • 生产环境下不推荐 777 授权方式
    $ mv composer.phar /usr/local/bin/composer

5.修改 root 密码

  • 同时因为不清楚 root 密码,我们直接先做好修改
  • 密码需要重复输入两次,并且不会显示,请注意
    $ passwd root

6.可以查看一下是 linux 发行版版本(命令会有所区别)

  • 官方的镜像为 Linuxalpine
    $ cat /etc/os-release

7. 建立一个指定GID的组

  • 官方的镜像为 Linuxalpine 和很多小伙伴用的 Centos 命令会有所区别
  • 如果是自己的建立的镜像,按照发行版本命令走就好了
    $ addgroup -g 10001 -S www

8. 建立一个指定UID的用户

  • 指定shell, 让它属于指定的用户组。
    $ adduser  www -u 20001 -D -S -s /bin/bash -G www

9. 让新建的用户可以使用 su -root 用户下,

  • $ chmod 4755 /bin/busybox

10. 切换至 www 用户执行 composer

  • su www 切换用户
  • whoami 查看当前用户
    $ su www
    $ whoami

11. 将 Composer 镜像设置为阿里云镜像,用于加速国内下载速度

  • 当然是否使用阿里云镜像看个人需求(无广告嫌疑)
    $ composer config -g repo.packagist composer https://mirrors.aliyun.com/composer

12. 通过 Composer 安装 hyperf 骨架

  • 安装时选择看个人需求哈!
    $ composer create-project hyperf/hyperf-skeleton

13. 选择性安装

  • 安装 Conul ,此次是最新的 1.6.2 版本,但是是相对时间而言
  • 可以去 Conul官方 获取最新的版本
    $ wget https://releases.hashicorp.com/consul/1.6.2/consul_1.6.2_linux_amd64.zip
    $ unzip consul_1.6.2_linux_amd64.zip

14. 以下只是提供一下命令,并不需要操作

  • 查看一下配置等信息
  • 一般情况下,hyperf 官方的源镜像都是配置好的
  • 查看 swoole
    $ php --ri swoole
    $ php -i | grep ini

14. php.ini 内写入一下信息

  • 特别注意 OffO 为大写
    extension="grpc.so"
    extension="redis.so"
    extension="swoole.so"
    swoole.use_shortname = 'Off'

15. 存在兼容性问题的扩展

  • 由于 Hyperf 基于 Swoole 协程实现
  • Swoole 4 带来的协程功能是 PHP 前所未有的,所以与不少扩展都仍存在兼容性的问题。
  • 以下扩展(包括但不限于)都会造成一定的兼容性问题,不能与之共用或共存:
  • xhprof
  • xdebug
  • blackfire
  • trace
  • uopz
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 1
李铭昕

前不久写了这个

https://github.com/limingxinleo/docker-wor...

建议你的这些步骤都打包到一个 Dockerfile 里,然后直接 build Dockerfile,run 起来直接用就好了。

2周前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!