Loading

php 通过docker搭建Hyperf项目

 今天我们进行最方便的hyperf项目搭建方式启动一个hyperf的新项目

1. 创建好我们的Dockerfile、docker-compose.yml文件和一个空的文件夹data【也可以不是data,可以为任意名字的文件夹】

image

2. Dockerfile文件的编写【拉取hyperf框架】

# 1. 选用官方已经带 Swoole 的基础镜像【说明:8.2为php版本,v3.18为hyperf版本】
FROM hyperf/hyperf:8.2-alpine-v3.18-swoole

# 2. 换国内源(Alpine 安装依赖快)
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 3. 装 composer、常用扩展(git 用来拉包)
RUN apk add --no-cache \
        git \
        unzip \
    && wget -O /usr/local/bin/composer https://getcomposer.org/download/latest-stable/composer.phar \
    && chmod +x /usr/local/bin/composer \
    && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

# 4. 创建工作目录
WORKDIR /home/carver-hyperf

# 5. 一次性创建项目(--no-dev 可省,按需要)
#    注意:composer 会以当前目录为项目根,自动生成 .env / vendor 等
RUN composer create-project hyperf/hyperf-skeleton . --no-interaction --prefer-dist

# 6. 暴露端口
EXPOSE 9501

# 7. 默认启动命令
CMD ["php", "bin/hyperf.php", "start"]

3. docker-compose.yml文件的编写【主要为了映射端口等配置】

version: '3.8'  # 使用较新的 Docker Compose 版本

services:
  carver-hyperf-app:  # 服务名称
    build:
      context: .  # 使用当前目录作为构建上下文
      dockerfile: Dockerfile  # 指定 Dockerfile 文件
    image: my-hyperf:3.1
    container_name: carver-hyperf  # 自定义容器名称
    ports:
      - "9501:9501"  # 将宿主机的9501端口映射到容器的9501端口:cite[1]:cite[5]
    restart: unless-stopped  # 设置重启策略
    # volumes:
    #   - ./data:/home/carver-hyperf  # 挂载当前目录到容器工作目录,方便代码热更新
    environment:
      - TZ=Asia/Shanghai  # 设置时区
    working_dir: /home/carver-hyperf  # 设置容器内工作目录

注意:volumes 挂载的宿主机项目目录先注释,等我们本地有自己的项目了( 将容器中的项目复制到我们的宿主机中的data目录中,上一节有讲复制容器项目文件到宿主机 ),再取消注释,避免宿主机的目录data为空映射到容器中后,直接覆盖了容器中的目录,导致容器中的目录也为空,项目启动失败。

4.在宿主机的根目录也就是Dockerfile所在的目录,执行命令【打包自己的镜像并执行为容器】

docker-compose up -d
  • 执行结果【镜像打包成功,容器启动成功】

    image
  • 观察一下启动情况【状态启动成功】

    image

5. 访问项目【项目访问成功】

image

温馨提示:

当修改完代码后,通过 CTRL + C 终止当前启动的进程实例,并重新执行 php bin/hyperf.php start 启动命令,因为该框架是常驻内存的哦!

posted @ 2025-09-16 19:29  Carvers  阅读(93)  评论(0)    收藏  举报