diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fc44587 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,39 @@ +# openteam 自托管部署 +# +# 启动:docker compose up -d +# 首次会本地构建镜像(见 Dockerfile);若已用 build-image.sh 推到仓库, +# 把 image 改为仓库地址并删掉 build 段即可拉取多架构镜像。 +# +# 密钥从仓库根 .env 读取(与本地开发共用),缺失时 compose 直接报错。 +name: openteam + +services: + openteam: + build: + context: . + dockerfile: Dockerfile + image: openteam:latest + container_name: openteam + restart: unless-stopped + ports: + - "${HOST_PORT:-8080}:8080" + # 以宿主用户运行,保证能写当前目录的 ./data 绑盘(默认 1000:1000,可用 OT_UID/OT_GID 覆盖) + user: "${OT_UID:-1000}:${OT_GID:-1000}" + environment: + OT_ENV: production + OT_PORT: 8080 + # sqlite 落盘到当前目录 ./data(容器 WORKDIR=/app,DSN 用相对路径) + OT_DB_DRIVER: sqlite + OT_DB_DSN: data/openteam.db + # 必填密钥:渠道加密主密钥 / 管理员密码 / JWT 签名 + OT_MASTER_KEY: ${OT_MASTER_KEY:?请在 .env 中设置 OT_MASTER_KEY} + OT_ADMIN_PASSWORD: ${OT_ADMIN_PASSWORD:?请在 .env 中设置 OT_ADMIN_PASSWORD} + OT_JWT_SECRET: ${OT_JWT_SECRET:?请在 .env 中设置 OT_JWT_SECRET} + volumes: + - ./data:/app/data + healthcheck: + test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8080/healthz"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 10s