| |
| |
| |
| |
| |
|
|
| |
| FROM node:22-alpine AS builder |
|
|
| |
| RUN apk add --no-cache git |
|
|
| WORKDIR /src |
|
|
| |
| RUN git clone --depth 1 https://github.com/q8625332/ljq-MuMuAINovel.git . |
|
|
| |
| WORKDIR /src/frontend |
|
|
| |
| RUN npm config set registry https://registry.npmmirror.com |
|
|
| |
| RUN npm install |
|
|
| |
| RUN sed -i "s|outDir: '../backend/static'|outDir: 'dist'|g" vite.config.ts |
|
|
| |
| RUN npm run build |
|
|
| |
| FROM python:3.11-slim |
|
|
| WORKDIR /app |
|
|
| |
| RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources \ |
| && sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources |
|
|
| |
| RUN apt-get update && apt-get install -y \ |
| gcc \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| |
| COPY --from=builder /src/backend/requirements.txt ./ |
| RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ |
|
|
| |
| COPY --from=builder /src/backend/ ./ |
|
|
| |
| COPY --from=builder /src/frontend/dist ./static |
|
|
| |
| COPY --from=builder /src/backend/.env.example ./.env.example |
|
|
| |
| RUN mkdir -p /app/data /app/logs /app/config |
|
|
| |
| EXPOSE 7860 |
|
|
| |
| ENV PYTHONUNBUFFERED=1 |
| ENV APP_HOST=0.0.0.0 |
| ENV APP_PORT=7860 |
| ENV TZ=Asia/Shanghai |
|
|
| |
| HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ |
| CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:7860/health')" || exit 1 |
|
|
| |
| COPY <<'EOF' /app/entrypoint.sh |
| |
| set -e |
|
|
| echo "========================================" |
| echo " MuMuAINovel - AI 小说创作工具" |
| echo "========================================" |
|
|
| |
| if [ -f /app/config/.env ]; then |
| echo "[INFO] 检测到自定义配置文件,正在应用..." |
| cp /app/config/.env /app/.env |
| elif [ -f /app/.env.example ]; then |
| echo "[INFO] 使用默认配置模板..." |
| cp /app/.env.example /app/.env |
| fi |
|
|
| |
| mkdir -p /app/data /app/logs |
|
|
| echo "[INFO] 启动服务 - 端口: ${APP_PORT:-7860}" |
| echo "========================================" |
|
|
| cd /app |
|
|
| exec python -m uvicorn app.main:app \ |
| --host ${APP_HOST:-0.0.0.0} \ |
| --port ${APP_PORT:-7860} |
| EOF |
|
|
| RUN chmod +x /app/entrypoint.sh |
|
|
| ENTRYPOINT ["/app/entrypoint.sh"] |
|
|