- IPFIX / NetFlow v9 采集 + TZSP DNS 嗅探识别应用,可选 ROS 只读 REST 轮询 - 内置 100+ 应用规则库,支持自定义域名 / IP 段 / 端口规则 - 按分钟 / 小时 / 天汇总写入 MySQL - 全网概览、主机监控、应用统计、流量流向(桑基图)、识别规则、系统设置 - 中英双语,深浅色主题,T568B 线色设计语言 - Docker 多架构镜像,GitHub Actions 测试与发布 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
23 lines
882 B
Docker
23 lines
882 B
Docker
# ---------- 阶段 1:构建前端 ----------
|
|
FROM node:20-alpine AS frontend
|
|
WORKDIR /fe
|
|
COPY frontend/package*.json ./
|
|
RUN npm ci || npm install
|
|
COPY frontend/ ./
|
|
RUN npm run build
|
|
|
|
# ---------- 阶段 2:后端运行时 ----------
|
|
FROM python:3.12-slim
|
|
ENV PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1 TZ=Asia/Shanghai
|
|
WORKDIR /app
|
|
COPY backend/requirements.txt ./
|
|
RUN pip install -r requirements.txt
|
|
COPY backend/app ./app
|
|
COPY --from=frontend /fe/dist ./frontend_dist
|
|
RUN mkdir -p /app/data
|
|
VOLUME ["/app/data"]
|
|
# Web / IPFIX / TZSP-DNS
|
|
EXPOSE 8080/tcp 2055/udp 37008/udp
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s CMD python -c "import urllib.request,os;urllib.request.urlopen(f'http://127.0.0.1:{os.environ.get(\"HTTP_PORT\",\"8080\")}/api/health',timeout=4)"
|
|
CMD ["sh", "-c", "exec uvicorn app.main:app --host 0.0.0.0 --port ${HTTP_PORT:-8080} --no-access-log"]
|