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

相关推荐
秋风起,再归来~4 分钟前
【Linux庖丁解牛】—进程优先级!
linux·运维·服务器
诡异森林。26 分钟前
Docker--Docker网络原理
网络·docker·容器
Lalolander31 分钟前
设备制造行业如何避免项目管理混乱?
运维·制造·工程项目管理·四算一控·epc·环保设备工程·设备制造
ALex_zry40 分钟前
Docker Macvlan网络配置实战:解决“network already exists“错误
网络·docker·php
IT小辉同学1 小时前
Docker如何更换镜像源提高拉取速度
spring cloud·docker·eureka
LucianaiB1 小时前
【金仓数据库征文】_AI 赋能数据库运维:金仓KES的智能化未来
运维·数据库·人工智能·金仓数据库 2025 征文·数据库平替用金仓
prinrf('千寻)1 小时前
nacos设置权重进行负载均衡不生效
运维·负载均衡
Lary_Rock1 小时前
Android 编译问题 prebuilts/clang/host/linux-x86
android·linux·运维
绵绵细雨中的乡音2 小时前
Linux进程学习【基本认知】
linux·运维·学习
matrixlzp2 小时前
K8S Service 原理、案例
云原生·容器·kubernetes