CasWAF
入门

Docker

仓库里有一个Dockerfile和一个docker-compose.yml,用旁边的源码构建镜像,并和MySQL一起运行。由于管理界面的Casdoor设置是编译进前端的,要先填好这些设置,再自己构建镜像。

1. 设置Casdoor和配置文件

按快速上手的第2步和第3步做:创建Casdoor应用,然后填写conf/app.conf和web/src/Conf.js。在conf/app.conf里把数据库指向db服务:

dataSourceName = root:123@tcp(db:3306)/
dbName = caswaf

2. 编辑docker-compose.yml

这个compose文件只发布了管理界面的端口。把网关端口也发布出来,并让MySQL第一次启动时建好caswaf数据库,因为CasWAF默认不会建数据库:

services:
  caswaf:
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - "80:80"
      - "443:443"
      - "17000:17000"
    depends_on:
      - db
    command: ["./wait-for-it", "db:3306", "--", "./server"]
    volumes:
      - ./conf:/conf/
  db:
    restart: always
    image: mysql:8.0.25
    environment:
      MYSQL_ROOT_PASSWORD: 123
      MYSQL_DATABASE: caswaf
    volumes:
      - /usr/local/docker/mysql:/var/lib/mysql

如果不只是试用,请把两处的MySQL密码都改掉。

3. 启动

docker compose up -d --build

打开http://localhost:17000并登录。conf文件夹挂载进了容器,所以以后改conf/app.conf只需要docker compose restart caswaf;改web/src/Conf.js则要重新构建。

说明

  • 镜像为linux/amd64构建,用Go 1.20和Node.js 18。
  • 设置环境变量RUNNING_IN_DOCKER=true后,CasWAF会把dataSourceName里的localhost改写成Docker宿主机(Linux上是172.17.0.1,其他系统是host.docker.internal),用于MySQL跑在宿主机上而不是在Compose里的情况。
  • 在容器里CasWAF只作为网关工作。把自己注册为开机自启和自我更新需要Windows或systemd服务。
  • 仓库的k8s/文件夹里有Kubernetes清单,附有单独的README。它们运行关闭了网关的管理界面(gatewayEnabled = false),放在你集群的ingress后面。
在GitHub上编辑

本页内容