docker中hyperf项目配置虚拟域名

在学习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

相关推荐
@郭小茶21 分钟前
windows部署docker
windows·docker·容器
云上艺旅42 分钟前
K8S学习之基础七十二:Ingress基于Https代理pod
学习·云原生·容器·https·kubernetes
XAL11 小时前
Docker的备份与恢复
运维·docker·容器
黑蛋同志1 小时前
Anolis系统下安装Jenkins
运维·jenkins
海鸥811 小时前
为 Jenkins Agent 添加污点(Taint)容忍度(Toleration)
运维·jenkins
程序员JerrySUN1 小时前
Linux UART 驱动开发全解析:从原理到实战
linux·运维·驱动开发
liux35281 小时前
k8s之Ingress讲解
云原生·容器·kubernetes
热爱运维的小七2 小时前
从数据透视到AI分析,用四层架构解决运维难题
运维·人工智能·架构
博观而约取2 小时前
Linux 和 macOS 终端中常见的快捷键操作
linux·运维·macos
H1346948902 小时前
华为服务器系统备份,想要备份华为服务器系统可以怎么操作?
运维·服务器·负载均衡