一、硬件要求
根据使用场景不同,Casdoor 对硬件内存的要求存在差异,具体如下:
- 自主构建 Docker 镜像:由于 Casdoor 前端基于 React 开发(属 NPM 项目),构建过程需消耗一定内存,建议机器内存不低于 2GB,内存不足 2GB 可能导致前端构建失败。
- 仅运行预构建镜像:无需构建过程,资源消耗较低,机器内存不低于 100MB 即可满足运行需求。
二、操作系统兼容性
Casdoor 对操作系统无特殊限制,全面支持 Linux、Windows 及 macOS 三大主流系统,用户可根据自身使用习惯选择对应系统部署。
三、Docker 环境要求
部署 Casdoor 需依赖 Docker 环境,不同系统的安装方式及版本要求如下:
- 基础版本要求:无论使用何种操作系统,均需确保 Docker 引擎版本 ≥ 17.05。这是因为配置文件 docker-compose.yml 中采用了多阶段构建功能,该功能仅在 17.05 及以上版本的 Docker 中支持。更多关于多阶段构建的细节,可参考 Docker 官方文档。
- 系统适配方式:Linux 系统可直接安装 Docker 引擎(docker-engine);Windows 与 macOS 系统建议安装 Docker Desktop,集成度更高且操作更便捷。
- Docker Compose 要求:若需使用 docker-compose 进行部署,需确保其版本 ≥ 2.2。需注意,Linux 系统中 Docker Compose 与 Docker 引擎为独立组件,需单独安装。
四、Docker 镜像获取
官方在 DockerHub 提供了两款 Casdoor 镜像,适用于不同使用场景,具体说明如下:
| 镜像名称 | 具体描述 | 适用建议 |
|---|---|---|
| casdoor-all-in-one | 集成 Casdoor 核心程序与 MySQL 数据库,内置测试用玩具数据库 | 适合新用户快速体验 Casdoor,无需额外配置数据库 |
| casdoor | 仅包含 Casdoor 核心程序,无内置数据库 | 需连接自定义数据库,适合生产环境部署使用 |
其中,casbin/casdoor-all-in-one 镜像为一站式体验方案,整合了 Casdoor 二进制文件、MySQL 数据库及全套默认配置,新用户可通过一两行命令快速启动服务,无需复杂配置。但需注意,该镜像内置数据库仅用于测试,不建议在生产环境中使用。
五、部署方式说明
方式一:使用集成测试数据库部署(快速体验)
通过 casdoor-all-in-one 镜像部署,可直接启动包含测试数据库的服务,同时将容器 8000 端口映射至主机,若本地无该镜像,系统会自动从 DockerHub 拉取。执行命令如下:
docker run -p 8000:8000 casbin/casdoor-all-in-one服务启动后,在浏览器访问 http://localhost:8000,使用默认全局管理员账号登录控制台:
- 用户名:admin
- 密码:123
方式二:使用标准镜像部署(自定义数据库)
提示:若不便将配置文件挂载至容器,可通过设置环境变量配置数据库连接信息,灵活适配部署需求。
示例 1:通过环境变量配置
docker run \
-e driverName=mysql \
-e dataSourceName='user:password@tcp(x.x.x.x:3306)/' \
-p 8000:8000 \
casbin/casdoor:latest示例 2:通过挂载配置文件部署
首先创建配置文件 conf/app.conf,可从 Casdoor 官方仓库复制默认配置文件进行修改。app.conf 采用 Ini 格式,核心配置项及说明如下,覆盖数据库、服务、安全等关键场景,适配生产及测试需求:
核心配置项说明
# 数据库配置(必配)
driverName = mysql # 数据库驱动,支持 mysql、postgres、sqlite3、sqlserver
dataSourceName = root:123456@tcp(localhost:3306)/casdoor?charset=utf8mb4&parseTime=True&loc=Local # 连接串
# 若使用 SQLite,配置示例:dataSourceName = casdoor.db (文件路径,挂载时需注意权限)
# 服务基础配置
httpport = 8000 # 服务监听端口,需与容器映射端口一致
runmode = dev # 运行模式,dev(开发)/prod(生产),prod模式下日志输出更简洁
sessiontimeout = 3600 # Session 超时时间(秒),默认1小时
# 安全配置
secret = 1234567890abcdef # 密钥,用于签名Token、加密数据,生产环境需替换为复杂随机字符串
cors = true # 是否允许跨域请求,前端与后端分离部署时需设为true
corsAllowOrigins = * # 允许跨域的源地址,生产环境建议指定具体域名(如https://your-domain.com)
# 日志配置
logfile = logs/casdoor.log # 日志文件路径
loglevel = info # 日志级别,支持 debug、info、warn、error
logrotate = true # 是否开启日志轮转,避免日志文件过大
# Docker 环境适配配置(配合Docker Compose使用)
runningInDocker = false # 是否在Docker环境运行,通过Docker Compose部署时会自动设为true
dbHost = host.docker.internal # Docker环境下数据库主机地址,无需手动修改配置说明:1. 数据库连接串需根据实际数据库账号、密码、地址调整,不同驱动的连接串格式略有差异;2. 生产环境中,需将 runmode 设为 prod,secret 替换为随机生成的32位及以上字符串,同时限制 corsAllowOrigins 为指定域名,提升安全性;3. 若使用 SQLite 数据库,dataSourceName 直接填写数据库文件名称,且需确保容器对挂载目录有读写权限。
配置完成后,执行以下命令启动容器,将本地配置文件目录挂载至容器对应路径:
docker run -p 8000:8000 -v /folder/of/app.conf:/conf casbin/casdoor:latest备注:Casdoor 容器默认使用 UID 和 GID 为 1000 的用户运行。若使用 SQLite 数据库或其他需要文件权限的存储方式,需确保挂载路径(如上例中的 /folder/of/app.conf)对 UID 1000 有访问权限,避免 Casdoor 写入挂载目录时出现“权限拒绝”错误。
服务启动后,同样访问 http://localhost:8000,使用上述默认管理员账号登录。
方式三:使用 Docker Compose 部署
- 在 docker-compose.yml 文件同级目录下创建 conf/app.conf 目录,复制 Casdoor 官方默认配置文件至该目录并完成自定义配置(配置细节参考 Ini 文件配置指南)。
- 执行以下命令,通过 docker-compose 启动服务,自动创建独立数据库容器并完成关联:
docker-compose up服务启动成功后,访问 http://localhost:8000,使用默认管理员账号(admin/123)登录控制台即可。
补充说明:在 docker-compose.yml 文件中,官方定义了 RUNNING\_IN\_DOCKER 环境变量。该变量用于解决容器网络访问问题——通过 docker-compose 创建的“db”数据库容器,可在主机 localhost 访问,但无法在 Casdoor 容器内通过 localhost 访问。设置该变量为 true 后,系统会自动将 localhost 替换为 host.docker.internal,确保 Casdoor 正常连接数据库,降低新用户配置难度。