咚咚技术团队
  • 首页
  • 文章
    • 前端
      • 0.1 + 0.2 精度丢失深究
      • IOS H5 视频无法播放
      • H5 播放 amr 音频文件
      • IOS 10.x 版本在 Taro 中的兼容性问题
      • 百度 UEditor 引发的 cross-iframe 问题解决方案
      • 访问 www.banchengyun.com 时发生了什么
      • decodeURIComponent 与特殊符号
      • 前端埋点
    • 后端
      • Swoole 相关
        • MAC 本地环境执行 GuzzleHttp 时导致 Swoole 进程异常退出
      • Hyperf 相关
        • 在 phpstorm 中调试 hyperf 代码
        • Hyperf 1.x Proxy 缓存失效问题
      • K8s 相关
        • 搭建 k8s 集群
        • 使用 docker-compose 快速搭建 Hyperf + Redis 开发环境
        • Kubernetes Autoscaler
      • 其它
        • 幂等性和原子性
    • 测试
    • 效能提升
      • 优秀开发者的第一步:始于需求分析
      • 优秀开发者的第二步:如何阅读他人的代码
  • 活动
  • 课堂
  • 知识库
    • 公共
      • 什么是流程型组织
      • 半城云集成产品开发流程
      • 阿⾥云 Codeup 代码平台使⽤ & 迁移指南
      • git 使用规范
      • 关于第三方与服务号授权的问题
      • 收不到消息的排查方法
      • 系统安全
      • 前端编码规范
      • 后端编码规范
      • 测试规范
    • 前端
      • 规范
        • 前端编码规范
        • 咚咚技术栈
        • code-review 规范
        • git 工作流
        • Tapd 文档
      • 复盘经验
        • 2021.01 效能、规范、技术债讨论会
      • Code Review
        • SCRM 2020-07
    • 后端
      • 复盘经验
        • SCRM 2020 年 8 月
      • Code Review
        • SCRM 2020-07
    • 测试
      • 复盘经验
        • SCRM 2020 年 8 月
  • 项目文档
    • 前端
    • 后端:小程序
    • 后端:企业微信
  • 接口文档
  • 兴趣小组
    • golang 小组
    • 增长小组
    • 前端小组
  • 书单推荐
  • 生产环境 分析会
    • NO.2022.01
  • 生产环境 可用性
  • 团队活动
    • OpenTalk
      • NO.2021.Q3
      • NO.2020.Q2
    • WalkTogether
  • 关于我们
  • GitBook 使用说明
由 GitBook 提供支持
在本页
  • 0x00: 为什么要使用docker-compose搭建开发环境
  • 0x01: 准备工作
  • 0x02: docker-compose.yaml
  • 0x03: 使用步骤
  • 0x04: 连接Redis
  • 0x05: 宿主机访问
  • 0x06: 停止

这有帮助吗?

  1. 文章
  2. 后端
  3. K8s 相关

使用 docker-compose 快速搭建 Hyperf + Redis 开发环境

上一页搭建 k8s 集群下一页Kubernetes Autoscaler

最后更新于3年前

这有帮助吗?

0x00: 为什么要使用docker-compose搭建开发环境

  • 使用线上环境镜像, 开发环境与线上环境保持一致, 包括PHP版本, Swoole版本以及各种扩展版本

  • 无需手动安装PHP和Swoole等运行环境

  • 跨Windows / Linux / macOS部署

  • 无需手动安装Redis

0x01: 准备工作

  • 安装

  • 确认本机9501端口没有占用(lsof -i :9501)

  • 确认本机6379端口没有占用(lsof -i :6379)

0x02: docker-compose.yaml

version: "3.7"
services:
  redis:
    image: redis
    container_name: redis
    ports:
      - 6379:6379
    volumes:
      - type: volume
        target: /data
        source: redis
  hyperf:
    image: bcycr-registry.cn-hangzhou.cr.aliyuncs.com/base/hyperf:7.4-v1
    stdin_open: true
    tty: true
    container_name: hyperf
    environment:
      REDIS_HOST: redis
      SCAN_CACHEABLE: (false)
    volumes:
      - $APP_ROOT:/opt/www
    ports:
      - 9501:9501
    links:
      - redis
    depends_on:
      - redis
volumes:
  redis: { }

0x03: 使用步骤

  • 将上面的docker-compose.yaml内容保存到本地的docker-compose.yaml中, 下例保存到/root/docker-compose.yaml

  • 将docker-compose.yaml:18行的$APP_ROOT替换为Hyperf项目的绝对路径

  • 运行docker-compose -f /root/docker-compose.yaml up -d, 注意将/root/docker-compose.yaml替换为实际的docker-compose.yaml路径

    2m@2ms-MacBook-Pro bcy-next % docker-compose -f docker-compose.yaml up -d
    Starting redis ... done
    Starting hyperf ... done
  • 运行docker ps查看正在运行的容器, 正常情况下应该看到

    2m@2ms-MacBook-Pro bcy-next % docker ps
    CONTAINER ID        IMAGE                                                           COMMAND                  CREATED             STATUS              PORTS                    NAMES
    30a8b491cad5        bcycr-registry.cn-hangzhou.cr.aliyuncs.com/base/hyperf:7.4-v1   "/bin/sh"                38 minutes ago      Up 15 minutes       0.0.0.0:9501->9501/tcp   hyperf
    7c4c6b05a251        redis                                                           "docker-entrypoint.s…"   46 minutes ago      Up 15 minutes       0.0.0.0:6379->6379/tcp   redis

    此时redis和hyperf容器都已经运行并且监听了6379和9501端口, 但hyperf应用并没有启动, 需要进入容器启动hyperf

  • 运行docker exec -it hyperf bash打开hyperf容器的终端, 此时可以使用php bin/hyperf.php start运行hyperf应用或者运行其它的命令

    2m@2ms-MacBook-Pro bcy-next % docker exec -it hyperf bash
    bash-5.0# php bin/hyperf.php -V
    Console Tool

0x04: 连接Redis

由于docker-compose.yaml中声明了links, 所以hyperf容器可以直接使用redis作为host连接redis, environment字段已经自动设置了REDIS_HOST环境变量, 如果.env中有REDIS_HOST需要注释掉

0x05: 宿主机访问

Redis和Hyperf容器均可以通过宿主机回环地址直接访问

2m@2ms-MacBook-Pro bcy-next % curl http://127.0.0.1:9501/healthz
ok%
2m@2ms-MacBook-Pro bcy-next % redis-cli             
127.0.0.1:6379> ping
PONG

0x06: 停止

docker-compose -f /root/docker-compose.yaml down -d

Docker