124 Star 1.3K Fork 378

MineAdmin / MineAdmin

 / 详情

【新手特辑】基于Docker以及docker-compose快速搭建本地开发环境教程

待办的
拥有者
创建于  
2022-03-27 16:28

说明

本教程只针对使用 Docker 在本地搭建开发环境,服务器部署请参考:服务器部署文档

Docker是什么

简单来说,docker是一种虚拟化技术(和虚拟机差不多,没有虚拟机隔离的那么彻底)。
然后我们通过docker下载不同功能的容器来使用;而所有容器都运行在docker之上。

那么,什么是容器?可以通俗的理解为一个个集装箱,每个集装箱封装好了功能。
比如,想开发php,就通过docker下载一个php的容器来运行,那么你就可以开发php了

安装Docker

首先,下载DeskTop Docker后,一步步安装软件。
安装完成后,打开docker显示这个界面,既已代表安装成功了。
安装完成后

拉取镜像

MineAdmin 需要用的几个镜像列表:

  • ixmo/mine-admin(运行mineadmin的基础环境镜像,已配置好swoole、php、git等基础环境)
  • mysql:5.7 (宿主机安装有,则不需要拉取)
  • redis (宿主机安装有,则不需要拉取)
  • rabbitmq:management (宿主机安装有或不需要队列功能,则不需要拉取)

首先,拉取 ixmo/mine-admin 镜像,打开 cmd 或者 终端

# 拉取镜像
docker pull ixmo/mine-admin

# 创建环境容器
docker run -d --name mineadmin -v d:\mineadmin:/opt/www -p 9501:9501 -p 9502:9502 -p 9503:9503 -it ixmo/mine-admin

参数说明:

  • --name 容器名字
  • -v 本地目录:容器目录 (宿主机与容器目录挂载)
  • -p 本地端口:容器端口 (宿主机与容器端口映射)

拉取 mysql:5.7 镜像,如果本地宿主机安装有mysql,可跳过

# 拉取镜像
docker pull mysql:5.7

# 创建mysql容器
docker run -d -p 3306:3306 --privileged=true -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

参数说明:

  • -d 表示后台运行
  • -p 表示端口映射
  • --privileged=true 设值MySQL的root用户权限, 否则外部不能使用root用户登陆
  • -e MYSQL_ROOT_PASSWORD=123456   设置MySQL数据库root用户的密码
  • --name 表示容器名字
  • --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci 设值数据库默认编码

拉取 redis 镜像,如果本地宿主机安装有redis,可跳过

# 拉取镜像
docker pull redis

# 创建redis容器
docker run --name redis -d -p 6379:6379 redis

参数说明:

  • --name 表示容器名字
  • -p 表示端口映射

拉取 rabbitmq:management 镜像,如果本地宿主机安装有或者不需要队列功能,可跳过

# 拉取镜像
docker pull rabbitmq:management

# 创建rabbitmq容器
docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

参数说明:

  • -d 表示后台运行
  • --name 表示容器名字
  • -e RABBITMQ_DEFAULT_USER=admin 设置rabbitmq默认的用户名
  • -e RABBITMQ_DEFAULT_PASS=admin 设置rabbitmq默认的密码
  • -p 表示映射的一系列端口

最后容器运行效果

输入图片说明

通过docker-compose快速搭建本地开发环境

前提条件

  • 宿主机安装好dockerdocker-compose环境
  • 宿主机安装好nodejsnpmyarn环境,nodejs建议装lts版本
  • 下载【前端】,然后在后端根目录建立mine-ui目录,前端文件复制到这里

步骤

  1. 第一次跑暂时只启动hyperfmysqlredis这三个容器

注意:mysqlredis没有映射出来持久化,需要你自己百度一下

# 只启动`hyperf`、`mysql`、`redis`这三个容器
docker-compose up -d hyperf mysql redis

第一次跑要先进容器,跑一遍composermine:install的命令

# 进hyperf容器
docker-compose exec hyperf /bin/sh

# 查看当前目录,即mineadmin目录
pwd
# /opt/www

# 安装依赖
composer install -vvv

# 安装mineadmin
php bin/hyperf.php mine:install

# mysql和redis填写
- `mysql`的server地址输入`mysql`,端口:`3306`,密码为`12345678`
- `redis`的server地址输入`redis`,没有密码
- 其它一路回车就好
- 第一次 `php bin/hyperf.php mine:install` 是配置`.env` 文件

# 再次执行安装命令
php bin/hyperf.php mine:install
- 这次将执行安装数据

# 退出hyperf容器
exit
  1. 启动前端

提示:docker-compose.yml前端映射的是8101端口,自己修改成想要的端口

# 进入前端目录
cd mine-ui

# 修改mine-ui/.env文件的ip为你服务器ip

npm install 
npm run dev 或者 npm run build
# 或者
# yarn install
# yarn dev 或者 yarn build

# 退回mineadmin目录 
cd ..

# 启动前端容器
docker-compose up -d nginx-frontend

提示:hyperf容器内没有nodejsnpm环境,所以要在宿主机安装前端npm先打包,要是你不小心在打包前就已经起了前端服务,那么可以执行以下命令删除掉前端容器:

# 停止nginx-frontend容器 && 删除nginx-frontend容器
docker-compose stop nginx-frontend && docker-compose rm nginx-frontend
# 输入y,确认删除

# 前端打包完后,单独启动前端服务
docker-compose up -d nginx-frontend

# 可选:查看日志
# docker-compose logs nginx-frontend
  1. 如果登录时一直转圈圈,可能super_adminadmin_role有问题,要从数据库读取后抄进.env
# 进入mysql容器
docker-compose exec mysql /bin/bash

# 进入mysql客户端
mysql -uroot -p
# 输入密码:12345678

# 选择mineadmin库
use mineadmin;
# 分别查询出`super_admin`和`admin_role`的id
select * from system_user;
select * from system_role;
# 退出mysql
exit
# 退出容器
exit

# 停止和删除redis容器,或者你连进去redis,清空掉缓存
docker-compose stop redis && docker-compose rm redis
# 如有提示,输入y

# 重启容器
docker-compose up -d redis

完成

docker-compose.yml前端映射的是8101端口,自己修改成想要的端口

前端访问地址:http://服务器地址:8101

后端地址验证:http://服务器地址:9501

至此,环境已搭建完毕,可以使用 MineAdmin 开发项目啦 !!!

评论 (18)

青衣煮茶 创建了任务
青衣煮茶 修改了描述
青衣煮茶 修改了描述
青衣煮茶 修改了描述
青衣煮茶 修改了描述
青衣煮茶 修改了描述
青衣煮茶 修改了标题
展开全部操作日志

输入图片说明
docker-compose的说明有点水,这里应该先npm run dev,再npm run build,在dist文件夹里面看到静态资源再进行下一步。
而且整体来讲,docker-compose和拉取镜像这两种方式尽量分开,最好提示二选一,推荐docker-compose,否则让人一头雾水。
本身框架对windows用户就不太友好,建议这方面文档用心维护下,降低windows用户的入门门槛。
一点点小建议,希望采纳,祝框架越来越好!

感谢提出的建议,目前精力都放在新版本上,后续文档会继续优化、完善。

假如您有空的话,可以贡献一些文档的编写。
https://gitee.com/xmo/mineadmin-doc

输入图片说明

启动的时候报这个错误是什么原因

不是,有这个文件

不知道是不是,php版本问题,你那个docker镜像 composer install的时候会提示php版本太低要高于8.1 啥的,提示要composer update

master版本昨天团队有人改了composer包,还未修过来,可先用element_plus分支的代码

可以了,谢谢啦

这个docker部署的教程不适合master的代码了吧,文档这块有更新了吗,另外,docker-compose.yml里的服务都没有hyperf这些,直接运行报错一直在重启

docker-composer刚更新了,已经可以了

嗯,看到更新了,已经操作OK了,继续支持 :clap:

青衣煮茶 修改了描述

大佬镜像拉下来的是个空文件夹是什么原因啊

镜像拉取下来的文件都是空的, 什么命令都执行不了

拉下来后,用git拉代码

请问大佬,跑完镜像后,访问他的地址,都无法打开是什么问题呢?输入图片说明

已经解决,可以访问后台,后台只有一行字:"welcome use mineAdmin" 是正常的吗

正常了,然后搭建前端

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(7)
2230484 georgegalway 1655892505 17993 xmo 1595520854
PHP
1
https://gitee.com/mineadmin/mineadmin.git
git@gitee.com:mineadmin/mineadmin.git
mineadmin
mineadmin
MineAdmin

搜索帮助