首页
/ Casdoor项目Docker Compose部署指南

Casdoor项目Docker Compose部署指南

2025-07-06 04:38:07作者:翟萌耘Ralph

概述

Casdoor是一个开源的身份认证和单点登录(SSO)平台,采用Docker Compose部署可以大大简化其安装和配置过程。本文将详细解析Casdoor项目的docker-compose.yml文件,帮助开发者理解其架构并顺利完成部署。

文件结构解析

服务定义

该docker-compose.yml文件定义了两个主要服务:

  1. casdoor服务:Casdoor应用本身
  2. db服务:MySQL数据库服务

这种分离式设计遵循了微服务架构的最佳实践,使得应用和数据库可以独立扩展和维护。

版本声明

version: '3.1'

使用Docker Compose 3.1版本,这是一个稳定且功能完善的版本,支持大多数现代Docker功能。

Casdoor服务详解

构建配置

build:
  context: ./
  dockerfile: Dockerfile
  target: STANDARD

这部分配置说明:

  1. 使用当前目录(./)作为构建上下文
  2. 使用项目根目录下的Dockerfile
  3. 构建目标是STANDARD阶段(多阶段构建)

启动命令

entrypoint: /bin/sh -c './server --createDatabase=true'

启动命令做了两件事:

  1. 执行./server启动Casdoor服务
  2. 传递--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目录,确保数据在容器重启后不会丢失。

部署建议

  1. 安全加固

    • 修改默认的MySQL root密码
    • 考虑使用.env文件管理敏感信息
    • 为Casdoor创建专用的数据库用户而非使用root
  2. 性能优化

    • 根据负载调整MySQL的内存参数
    • 考虑添加Redis缓存层
  3. 高可用

    • 生产环境应考虑数据库主从复制
    • 可以添加负载均衡器实现Casdoor实例的水平扩展

常见问题解决

  1. 端口冲突

    • 如果8000或3306端口被占用,可以修改映射端口如"8001:8000"
  2. 数据库连接问题

    • 确保MySQL服务完全启动后再启动Casdoor(depends_on仅保证容器启动顺序)
  3. 数据持久化失败

    • 检查主机目录权限,确保Docker进程有写入权限

通过本文的详细解析,开发者应该能够理解Casdoor的Docker Compose部署架构,并根据实际需求进行调整和优化。这种部署方式特别适合开发测试环境和中小型生产环境使用。