在学习hyperf
框架时遇到一些问题,这里是直接用了docker
环境
下载镜像运行容器
shell
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
yml
version: "3.9"
services:
hyper83:
image: hyperf/hyperf:8.3-alpine-v3.19-swoole-slim
container_name: hyper83
working_dir: /data/project
privileged: true
user: root
entrypoint: /bin/sh
ports:
- "9501:9501"
networks:
- website
volumes:
- /data/project:/data/project
- /usr/bin/git:/var/run/git
- /usr/bin/git:/usr/bin/git
restart: always
tty: true
stdin_open: true
nginx12:
image: nginx:1.23.1-alpine
container_name: nginx12
ports:
- "80:80"
networks:
- website
volumes:
- /data/project:/usr/share/nginx/html
- /data/project:/etc/nginx/conf.d
restart: always
networks:
website:
driver: bridge
容器运行后进入容器后composer
创建项目
运行项目
shell
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,设置 SameSite
proxy_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