Casdoor项目Docker Compose部署指南
2025-07-06 04:38:07作者:翟萌耘Ralph
概述
Casdoor是一个开源的身份认证和单点登录(SSO)平台,采用Docker Compose部署可以大大简化其安装和配置过程。本文将详细解析Casdoor项目的docker-compose.yml文件,帮助开发者理解其架构并顺利完成部署。
文件结构解析
服务定义
该docker-compose.yml文件定义了两个主要服务:
- casdoor服务:Casdoor应用本身
- db服务:MySQL数据库服务
这种分离式设计遵循了微服务架构的最佳实践,使得应用和数据库可以独立扩展和维护。
版本声明
version: '3.1'
使用Docker Compose 3.1版本,这是一个稳定且功能完善的版本,支持大多数现代Docker功能。
Casdoor服务详解
构建配置
build:
context: ./
dockerfile: Dockerfile
target: STANDARD
这部分配置说明:
- 使用当前目录(./)作为构建上下文
- 使用项目根目录下的Dockerfile
- 构建目标是STANDARD阶段(多阶段构建)
启动命令
entrypoint: /bin/sh -c './server --createDatabase=true'
启动命令做了两件事:
- 执行
./server
启动Casdoor服务 - 传递
--createDatabase=true
参数自动创建数据库表结构
端口映射
ports:
- "8000:8000"
将容器内的8000端口映射到主机的8000端口,这是Casdoor的默认HTTP服务端口。
环境变量
environment:
RUNNING_IN_DOCKER: "true"
设置RUNNING_IN_DOCKER
环境变量,让应用知道它运行在Docker环境中,可能会影响某些配置的加载方式。
数据卷
volumes:
- ./conf:/conf/
将主机上的./conf
目录挂载到容器的/conf
目录,这样可以在不重建镜像的情况下修改配置文件。
MySQL数据库服务详解
镜像选择
image: mysql:8.0.25
使用MySQL 8.0.25官方镜像,这是一个长期支持版本,稳定性和性能都有保障。
平台指定
platform: linux/amd64
明确指定平台为linux/amd64,确保在不同架构的机器上都能正确运行。
端口映射
ports:
- "3306:3306"
将MySQL默认端口3306映射到主机,方便直接连接数据库进行管理。
环境变量
environment:
MYSQL_ROOT_PASSWORD: 123456
设置MySQL root用户的密码为"123456",生产环境中应使用更复杂的密码。
数据持久化
volumes:
- /usr/local/docker/mysql:/var/lib/mysql
将MySQL数据目录挂载到主机的/usr/local/docker/mysql
目录,确保数据在容器重启后不会丢失。
部署建议
-
安全加固:
- 修改默认的MySQL root密码
- 考虑使用.env文件管理敏感信息
- 为Casdoor创建专用的数据库用户而非使用root
-
性能优化:
- 根据负载调整MySQL的内存参数
- 考虑添加Redis缓存层
-
高可用:
- 生产环境应考虑数据库主从复制
- 可以添加负载均衡器实现Casdoor实例的水平扩展
常见问题解决
-
端口冲突:
- 如果8000或3306端口被占用,可以修改映射端口如"8001:8000"
-
数据库连接问题:
- 确保MySQL服务完全启动后再启动Casdoor(depends_on仅保证容器启动顺序)
-
数据持久化失败:
- 检查主机目录权限,确保Docker进程有写入权限
通过本文的详细解析,开发者应该能够理解Casdoor的Docker Compose部署架构,并根据实际需求进行调整和优化。这种部署方式特别适合开发测试环境和中小型生产环境使用。