HEL-269: 完成月结锁账、撤演示数据与代码收尾
锁账后写保护与闭期补录留痕;重开须审批并按版本链再结;列表/导出改走真实 API。 Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
co-authored by
Cursor
multica-agent
parent
f5e0915f63
commit
e5e326514d
@@ -0,0 +1,14 @@
|
||||
# 测试环境变量示例。复制为 deploy/.env 后填写。
|
||||
# 正式环境口令不得提交进仓库。
|
||||
|
||||
APP_HOST=0.0.0.0
|
||||
APP_PORT=4173
|
||||
APP_DB_PATH=/app/data/app.db
|
||||
APP_STORAGE_DIR=/app/data/files
|
||||
|
||||
# 引导管理员(库中尚无管理员时生效)
|
||||
APP_ADMIN_USERNAME=group-admin
|
||||
APP_BOOTSTRAP_ADMIN_PASSWORD=change-me-in-local-env
|
||||
|
||||
# 内网测试可暂时关闭登录失败锁定;正式环境不得开启
|
||||
# APP_LOGIN_RATE_LIMIT_DISABLED=1
|
||||
@@ -0,0 +1,23 @@
|
||||
FROM python:3.12-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY requirements.txt .
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY server.py ./
|
||||
COPY src ./src
|
||||
COPY web ./web
|
||||
|
||||
ENV PYTHONPATH=/app/src
|
||||
ENV APP_HOST=0.0.0.0
|
||||
ENV APP_PORT=4173
|
||||
ENV APP_DB_PATH=/app/data/app.db
|
||||
ENV APP_STORAGE_DIR=/app/data/files
|
||||
|
||||
EXPOSE 4173
|
||||
|
||||
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
|
||||
CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:4173/', timeout=4)"
|
||||
|
||||
CMD ["python", "server.py"]
|
||||
@@ -0,0 +1,36 @@
|
||||
# 测试环境部署编排。正式口令不得写入本文件。
|
||||
# 使用:复制 .env.example 为 .env 后填写,再执行 ./deploy.sh
|
||||
|
||||
services:
|
||||
caiwuzongzhang:
|
||||
build:
|
||||
context: ..
|
||||
dockerfile: deploy/Dockerfile
|
||||
image: caiwuzongzhang:test
|
||||
container_name: caiwuzongzhang-test
|
||||
ports:
|
||||
- "4173:4173"
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
APP_HOST: "0.0.0.0"
|
||||
APP_PORT: "4173"
|
||||
APP_DB_PATH: /app/data/app.db
|
||||
APP_STORAGE_DIR: /app/data/files
|
||||
volumes:
|
||||
- ../data:/app/data
|
||||
read_only: true
|
||||
tmpfs:
|
||||
- /tmp
|
||||
cap_drop:
|
||||
- ALL
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
mem_limit: 512m
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:4173/', timeout=4)"]
|
||||
interval: 30s
|
||||
timeout: 5s
|
||||
retries: 3
|
||||
start_period: 20s
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
# 测试环境部署。施工员不执行上线;由总工在测试机运行。
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$ROOT"
|
||||
if [[ ! -f .env ]]; then
|
||||
echo "缺少 deploy/.env。请复制 .env.example 后填写测试口令。" >&2
|
||||
exit 1
|
||||
fi
|
||||
mkdir -p "$ROOT/../data/files"
|
||||
docker compose -f compose.yaml up -d --build
|
||||
echo "已启动测试环境:http://127.0.0.1:4173/"
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
# 测试环境回滚:停掉当前容器,按 TAG 或上一个镜像再拉起。
|
||||
# 用法:./rollback.sh [image-tag]
|
||||
set -euo pipefail
|
||||
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$ROOT"
|
||||
TAG="${1:-}"
|
||||
docker compose -f compose.yaml down
|
||||
if [[ -n "$TAG" ]]; then
|
||||
export COMPOSE_IMAGE="caiwuzongzhang:${TAG}"
|
||||
docker compose -f compose.yaml up -d
|
||||
echo "已回滚到镜像 caiwuzongzhang:${TAG}"
|
||||
else
|
||||
echo "已停止测试容器。指定镜像标签可重新拉起:./rollback.sh <tag>"
|
||||
fi
|
||||
Reference in New Issue
Block a user