caw / Dockerfile
nagose's picture
Update Dockerfile
94d08b8 verified
# FROM yidadaa/chatgpt-next-web:v2.12.3
#FROM yidadaa/chatgpt-next-web
#ENV CUSTOM_MODELS=-all,+Creative-g4t,+Balanced-g4t,+Precise-g4t,+Creative,+Balanced,+Precise,+Creative-g4t-offline,+Balanced-g4t-offline,+Precise-g4t-offline,+Creative-offline,+Balanced-offline,+Precise-offline
# 基于官方 Python 3.10 基础镜像(兼容 CoPaw 且轻量)
FROM python:3.10-slim
# 设置维护者信息(Hugging Face 规范)
LABEL maintainer="your-name <your-email@example.com>"
LABEL org.opencontainers.image.source="https://github.com/agentscope-ai/CoPaw"
LABEL org.opencontainers.image.description="CoPaw - 阿里通义开源个人AI智能体工作台,适配Hugging Face环境"
LABEL org.opencontainers.image.licenses="Apache-2.0"
ENV COPAW_DEFAULT_LLM_PROVIDER=openai
ENV COPAW_DEFAULT_LLM_MODEL=qwen2.5-1.5b
ENV COPAW_DEFAULT_LLM_BASE_URL=https://nagose-qw4b.hf.space/v1
ENV COPAW_DEFAULT_LLM_API_KEY=dummy
# 设置环境变量(关键:指定端口、禁用缓存、中文编码、跳过交互式确认)
ENV PYTHONUNBUFFERED=1 \
PORT=7860 \
HOST=0.0.0.0 \
LANG=C.UTF-8 \
COPAW_WORKING_DIR=/app/working \
COPAW_SECRETS_DIR=/app/working.secret \
# 核心:跳过安全协议交互式确认
COPAW_ACCEPT_SECURITY_NOTICE=yes \
# 配置文件路径(0.0.6版本的默认路径)
COPAW_CONFIG_PATH=/app/working/config.json
# 安装系统依赖(解决CoPaw运行依赖,包含jq工具用于修改JSON配置)
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
g++ \
curl \
jq \
&& rm -rf /var/lib/apt/lists/*
# 安装 CoPaw(PyPI 可用的最新稳定版)
RUN pip install --no-cache-dir copaw==0.1.0b3 uvicorn fastapi
# 创建数据目录并设置权限
RUN mkdir -p ${COPAW_WORKING_DIR} ${COPAW_SECRETS_DIR} \
&& chmod -R 777 ${COPAW_WORKING_DIR} ${COPAW_SECRETS_DIR}
RUN pip install 'copaw[mlx]' mlx mlx-lm
RUN pip install 'copaw[ollama]'
#RUN pip install 'copaw[llamacpp]'
RUN pip install --upgrade copaw
# 暴露 7860 端口(Hugging Face 常用端口)
EXPOSE 7860
# 自动确认安全协议,非交互式初始化(0.0.6版本仅生成基础配置)
RUN echo "yes" | copaw init --defaults
# 1. 添加自定义模型接口(单行jq命令,避免解析错误)
RUN jq '.models.myapi = {"provider":"openai","base_url":"https://msapi.joko.qzz.io/v1","api_key":"none","model_name":"gpt-3.5-turbo"}' ${COPAW_CONFIG_PATH} > ${COPAW_CONFIG_PATH}.tmp && mv ${COPAW_CONFIG_PATH}.tmp ${COPAW_CONFIG_PATH}
# 2. 设置默认模型
RUN jq '.model.default = "myapi"' ${COPAW_CONFIG_PATH} > ${COPAW_CONFIG_PATH}.tmp && mv ${COPAW_CONFIG_PATH}.tmp ${COPAW_CONFIG_PATH}
# 终极修复:0.0.6版本正确的启动方式(直接运行copaw主程序 + 端口环境变量)
# 放弃uvicorn手动启动,改用原生方式 + 环境变量指定端口
CMD ["sh", "-c", "cd /app/working && copaw app --host 0.0.0.0 --port $PORT"]