Hyperf框架 - docker中运行Hyperf项目

为什么要使用hyperf镜像呢?
Hyperf对swoole有版本要求,而swoole对当前环境也有要求,可能需要安装多个版本PHP,以及其他配置,与其在你的本地搞来搞去,还不
如直接使用docker容器来开发
hyperf项目,开箱即用,

https://hub.docker.com/r/hyperf/hyperf/tags

镜像大小只有30M左右。

docker pull hyperf/hyperf:latest
docker images

# 下载并运行 hyperf/hyperf 镜像,使用host网络便于连接我的本机mysql镜像。
docker run --name hyperf --network host -v /data/www/hyperf:/hyperf-skeleton -p 9501:9501 
-it --entrypoint /bin/sh hyperf/hyperf:latest

# 镜像容器运行后,在容器内安装 Composer
wget https://github.com/composer/composer/releases/download/1.8.6/composer.phar
chmod u+x composer.phar
mv composer.phar /usr/local/bin/composer
# 将 Composer 镜像设置为阿里云镜像,加速国内下载速度
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer

# 通过 Composer 安装 hyperf/hyperf-skeleton 项目
cd /
composer create-project hyperf/hyperf-skeleton

如果遇到报错
Script Installer\Script::install handling the pre-update-cmd event terminated with an exception
[ErrorException]
rmdir(/hyperf/installer/): Text file busy

则需要手动删掉目录 /hyperf/installer/
然后
cd /hyperf-skeleton
composer install

进入命令行交互程序

# 进入安装好的 Hyperf 项目目录
cd /hyperf-skeleton
ls -l
# 启动 Hyperf
先配置数据库和redis
php bin/hyperf.php start

可能有点慢,需要等一会。

在容器外面
netstat -lntp |grep 9501

curl http://localhost:9501
{"method":"GET","message":"Hello Hyperf."}

查看开启的进程
ps -ef |grep skeleton

477 root      0:18 {php} skeleton.Master
481 root      0:00 {php} skeleton.Manager
483 root      0:00 {php} skeleton.Worker.0
484 root      0:03 {php} skeleton.queue.default.0

证明部署完成,是不是很简单。

使用exit命令退出hyperf容器

再次启动容器
docker start hyperf

进入容器
docker exec -it hyperf bash

启动服务
php bin/hyperf.php start

剩下的就是研究hyperf框架本身了。

在开始开发之前,首先得知道当前环境:
php --ri swoole 
4.5.2

php /hyperf-skeleton/bin/hyperf.php --version

php -v
7.2.31


代码热重载
cd /hyperf-skeleton
安装
composer require hyperf/watcher --dev
发布配置
php bin/hyperf.php vendor:publish hyperf/watcher
启动服务
php bin/hyperf.php server:watch
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的docker-compose文件,用于在容器运行一个Hyperf项目: ``` version: '3' services: app: build: context: . dockerfile: Dockerfile ports: - "9501:9501" volumes: - ./:/var/www/html environment: - APP_ENV=${APP_ENV} - DB_HOST=${DB_HOST} - DB_PORT=${DB_PORT} - DB_DATABASE=${DB_DATABASE} - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} depends_on: - mysql mysql: image: mysql:5.7 ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=${DB_PASSWORD} - MYSQL_DATABASE=${DB_DATABASE} - MYSQL_USER=${DB_USERNAME} - MYSQL_PASSWORD=${DB_PASSWORD} ``` 在上面的docker-compose文件,我们定义了两个服务:`app`和`mysql`。`app`服务用于运行我们的Hyperf项目,`mysql`服务用于运行MySQL数据库。 在`app`服务,我们使用`build`指令来构建一个包含我们的Hyperf项目Docker镜像。同时,我们使用`ports`指令将容器内的9501端口映射到主机的9501端口。我们还使用`volumes`指令将当前目录挂载到容器内的`/var/www/html`目录,以便在容器运行项目。最后,我们使用`depends_on`指令将`app`服务依赖于`mysql`服务。 在`mysql`服务,我们使用`image`指令来指定我们要使用的MySQL镜像。我们还使用`ports`指令将容器内的3306端口映射到主机的3306端口。最后,我们使用`environment`指令来设置MySQL的root密码、数据库名、用户名和密码。 请注意,上面的docker-compose文件仅适用于基本的Hyperf项目。如果您的项目需要其他服务(例如Redis或Elasticsearch),则需要相应地修改docker-compose文件以包含这些服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值