在学习hyperf
框架时遇到一些问题,这里是直接用了docker
环境
下载镜像运行容器
docker run --name hyperf -v /data/project:/data/project -p 9501:9501 -itd -w /data/project --privileged -u root --entrypoint /bin/sh 镜像ID
配置docker-compose.yml
version: "3.9"
services:hyper83:image: hyperf/hyperf:8.3-alpine-v3.19-swoole-slimcontainer_name: hyper83working_dir: /data/projectprivileged: trueuser: rootentrypoint: /bin/shports:- "9501:9501"networks:- websitevolumes:- /data/project:/data/project- /usr/bin/git:/var/run/git- /usr/bin/git:/usr/bin/gitrestart: alwaystty: truestdin_open: truenginx12:image: nginx:1.23.1-alpinecontainer_name: nginx12ports:- "80:80"networks:- websitevolumes:- /data/project:/usr/share/nginx/html- /data/project:/etc/nginx/conf.drestart: alwaysnetworks:website:driver: bridge
容器运行后进入容器后composer
创建项目
运行项目
cd hyperf-skeleton
php bin/hyperf.php start
配置nginx
反向代理
# 至少需要一个 Hyperf 节点,多个配置多行
upstream hyperf {# Hyperf HTTP Server 的 IP 及 端口server 172.23.0.1:9501; # 改成docker中的网桥ip
}server {# 监听端口listen 80;# 绑定的域名, 改成自己的域名server_name hyperf.xyz;location / {# 将客户端的 Host 和 IP 信息一并转发到对应节点 proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 转发Cookie,设置 SameSiteproxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";# 执行代理访问真实服务器proxy_pass http://hyperf;}
}
重启nginx,修改hosts
文件
关键点在于127.0.0.1
指向的是docker
容器的ip
docker inspect nginx
查看docker
网关是172.23.0.1
,所以在upstream hyperf
中配置172.23.0.1
我前面因为nginx.conf
中配置的是127.0.0.1
报错502