| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- # syntax=docker/dockerfile:1
- FROM node:22-bookworm-slim AS frontend
- WORKDIR /build/frontend
- COPY frontend/package.json frontend/package-lock.json ./
- RUN npm ci
- COPY frontend/ ./
- RUN npm run build
- FROM python:3.12-slim-bookworm AS runtime
- ENV PYTHONUNBUFFERED=1 \
- PYTHONDONTWRITEBYTECODE=1 \
- LANG=C.UTF-8 \
- TZ=Asia/Shanghai \
- DEEP_AGENT_ENV_PRIORITY=process \
- HOST=0.0.0.0 \
- PORT=8080 \
- LOG_LEVEL=INFO \
- LOG_FORMAT=json \
- LOG_FILE=/app/logs/ventagent.jsonl \
- TIKTOKEN_CACHE_DIR=/usr/local/share/tiktoken \
- MAIN_FAN_REPORT_MODE=crawler \
- MAIN_FAN_REPORT_API_URL=http://10.244.3.155:19010 \
- MAIN_FAN_REPORT_SOURCE_DIR=/data/source_data \
- RESULT_PLATFORM_ENABLED=False \
- MAIN_FAN_WORKFLOW_PUBLISH_ENABLED=False
- # 工作流默认本地核验;未来上报须同时开启总开关与 MAIN_FAN_WORKFLOW_PUBLISH_ENABLED。
- # URL、token、模型配置在运行时通过 --env-file 注入,不写入镜像。
- WORKDIR /app
- RUN apt-get update \
- && apt-get install -y --no-install-recommends bubblewrap ca-certificates tzdata \
- fonts-noto-cjk fontconfig libglib2.0-0 libgomp1 \
- && rm -rf /var/lib/apt/lists/*
- COPY release/requirements.lock /tmp/requirements.lock
- RUN pip install --no-cache-dir --require-hashes -r /tmp/requirements.lock \
- && rm /tmp/requirements.lock
- # 联网构建时保存分词词表;离线运行时无需首次下载。
- RUN python -c "import tiktoken; [tiktoken.get_encoding(name) for name in ('cl100k_base', 'o200k_base')]"
- RUN groupadd --gid 10001 ventagent \
- && useradd --uid 10001 --gid ventagent --create-home ventagent
- COPY --chown=ventagent:ventagent . /app
- COPY --from=frontend --chown=ventagent:ventagent /build/static/ /app/static/
- RUN mkdir -p /app/data /app/outputs /app/logs \
- && chown -R ventagent:ventagent /app/data /app/outputs /app/logs
- ENV BILLING_ENABLED=False \
- DEEPAGENT_THINKING=highest \
- OPENAI_TOOL_CALL_STREAMING=False
- USER ventagent
- EXPOSE 8080
- STOPSIGNAL SIGTERM
- HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
- CMD python -c "import json,os,urllib.request; r=json.load(urllib.request.urlopen('http://127.0.0.1:'+os.getenv('PORT','8080')+'/health',timeout=3)); raise SystemExit(r.get('status') != 'ok')"
- CMD ["python", "main.py"]
|