跳到主内容

使用Docker部署

本页面介绍如何使用Docker或Docker Compose部署Casdoor,并提供可选的反向代理(Traefik、Nginx、Caddy)配置。

先决条件

  • Docker
  • Docker Compose(用于compose方法)
  • 指向您服务器的域名(用于反向代理设置)

部署选项

Using Docker Compose

Create a docker-compose.yml file:

services:
casdoor:
image: casbin/casdoor:latest
container_name: casdoor
restart: unless-stopped
ports:
- "8000:8000"
environment:
- GIN_MODE=release
volumes:
- ./conf:/conf
- ./logs:/logs
networks:
- casdoor-network

networks:
casdoor-network:
driver: bridge

Start the service:

docker-compose up -d

反向代理配置

对于生产部署,建议使用带有TLS证书的反向代理。 选择您偏好的反向代理:

Traefik with Docker Labels

Create a docker-compose.yml with Traefik labels:

services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik/acme.json:/acme.json
command:
- --api.dashboard=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --certificatesresolvers.letsencrypt.acme.email=your-email@example.com
- --certificatesresolvers.letsencrypt.acme.storage=/acme.json
- --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web
networks:
- casdoor-network

casdoor:
image: casbin/casdoor:latest
container_name: casdoor
restart: unless-stopped
environment:
- GIN_MODE=release
volumes:
- ./conf:/conf
- ./logs:/logs
labels:
- "traefik.enable=true"
- "traefik.http.routers.casdoor.rule=Host(`your-domain.com`)"
- "traefik.http.routers.casdoor.entrypoints=websecure"
- "traefik.http.routers.casdoor.tls.certresolver=letsencrypt"
- "traefik.http.services.casdoor.loadbalancer.server.port=8000"
networks:
- casdoor-network

networks:
casdoor-network:
driver: bridge

Create the acme.json file:

touch traefik/acme.json
chmod 600 traefik/acme.json

配置

创建必要的配置目录

mkdir -p conf logs

下载Casdoor配置文件

wget https://raw.githubusercontent.com/casdoor/casdoor/master/conf/app.conf -O conf/app.conf
wget https://raw.githubusercontent.com/casdoor/casdoor/master/init_data.json.template -O conf/init_data.json

编辑conf/app.conf以匹配您的环境设置

备注

Casdoor的默认用户拥有uid和gid为1000。 使用 SQLite(或任何需要文件权限的存储)时进行卷映射,请确保路径(例如,上述示例中的 /folder/of/app.conf)对 UID 1000 可访问。 这可避免Casdoor写入映射卷时出现权限被拒绝之类的权限错误。

测试

部署完成后,请在浏览器中访问您的域名:

  • 仅限Docker运行/Composehttp://您的服务器IP:8000
  • 使用反向代理时https://your-domain.com

故障排除

检查容器日志

# For docker-compose
docker-compose logs casdoor

# For docker run
docker logs casdoor

验证反向代理配置

# Check if containers are running
docker ps

# Test connectivity
curl -I http://localhost:8000

SSL证书问题

  • 确保您的域名指向正确的服务器IP
  • 检查您的防火墙是否已开放80和443端口
  • 使用nslookup your-domain.com验证DNS解析是否生效