docker swarm hyperf websocket 实现热更新 平滑重启

程序配置

config/autoload/server.php中配置settings启动参数,增加

Constant::OPTION_MAX_WAIT_TIME => 60,

确保程序收到类似kill -15 $(<runtime/hyperf.pid)这样的信号,可以在处理完当前请求后自己退出

设置swarm

yaml如下

version: '3.8'

services:
  hyperf:
    image: hyperf/hyperf:8.1-alpine-v3.18-swoole
    stop_grace_period: 1m # 重要:给予足够的宽限期以完成处理
    deploy:
      replicas: 1
      update_config:
        parallelism: 1
        order: start-first # 重要:先启动新任务再停止旧任务
    ports:
      - "9502:9502" 
      - "9501:9501"
    volumes:
      - /www/hyperf-skeleton:/data/project # 挂载代码目录
    networks:
      - webnet
    working_dir: /data/project # 设置容器内工作目录
    command: php bin/hyperf.php start # 根据实际启动命令修改

networks:
  webnet:

更新

docker service update --force app_hyper

发表新评论