按照官方文档进行安装:安装部署 | MineAdmin
需要注意环境需求:php=8.0,swoole>=4.6.x,hyperf镜像选择这个就好:hyperf/hyperf:8.0-alpine-v3.13-swoole
项目克隆下来之后执行:docker run --name MineAdmin -v D:\phpstudy_pro\WWW\MineAdmin:/data/project/MineAdmin -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh hyperf/hyperf:8.0-alpine-v3.13-swoole
按照文档执行安装命令并启动项目
前端无需 docker 部署,安装:cd mine-ui && yarn 启动:yarn dev。
此时 docker 如果没有安装 redis 或版本不对后端启动就会报错,执行一下命令:
docker pull redis
docker run -itd --name redis-test -p 6379:6379 redis
注意 .env 文件的 db、redis 连接 host 设置为本机 ip (命令行 ipconfig 查看)
redis 安装好以后项目就可以正常运行了。但队列功能尚未开启,所以不能收发信息,执行以下命令:
docker pull rabbitmq
docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq
// .env文件
AMQP_HOST = 本机ip
AMQP_PORT = 5672
AMQP_USER = guest
AMQP_PASSWORD = guest
AMQP_VHOST = /
AMQP_ENABLE = true
如果未安装 rabbitmp 或者 .env 配置不对都会报错:PhpAmqpLib\Exception\AMQPRuntimeException: Error Connecting to server: Connection refused (111)
安装好了 rabbitmq 可以发信息了,但是由于创建容器的时候 docker 和 宿主机端口映射只添加了 9501:9501,虽然启动项目时 websocket 也启动了,但是宿主机的 9502 端口并未映射到容器。
解决方式有三种,可以百度一下如何修改 docker 容器端口映射,由于只是开发学习,最简单的方法就是停止容器、删除容器、 重新创建容器:docker run --name MineAdmin -v D:\phpstudy_pro\WWW\MineAdmin:/data/project/MineAdmin -p 9501:9501 -p 9502:9502 -it --privileged -u root --entrypoint /bin/sh hyperf/hyperf:8.0-alpine-v3.13-swoole