FROM node:24-slim as nodebuilder FROM rclone/rclone:latest AS rclone # 使用Python 3.11基础镜像 FROM python:3.11-slim ENV REMOTE_FOLDER="huggingface:/wenfxl" COPY --from=nodebuilder /usr/local/bin/node /usr/local/bin/ COPY --from=nodebuilder /usr/local/lib/node_modules/. /usr/local/lib/node_modules/ COPY --from=rclone /usr/local/bin/rclone /usr/bin/rclone # 设置工作目录 WORKDIR /app # 安装curl和wget用于下载release RUN ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm && \ apt-get update && apt-get install -y \ curl \ wget \ ca-certificates \ zsh \ cron \ tzdata \ perl \ openssl \ openssh-client \ nginx \ jq \ cron \ && rm -rf /var/lib/apt/lists/* # 获取最新的release信息并下载 RUN REPO="wenfxl/openai-cpa" && \ RELEASE_INFO=$(curl -s https://api.github.com/repos/${REPO}/releases/latest) && \ DOWNLOAD_URL=$(echo $RELEASE_INFO | jq -r '.tarball_url') && \ TAG_NAME=$(echo $RELEASE_INFO | jq -r '.tag_name') && \ echo "Latest release tag: $TAG_NAME" && \ echo "Downloading from: $DOWNLOAD_URL" && \ wget -O release.tar.gz "$DOWNLOAD_URL" && \ mkdir -p /app/src && \ tar -xzf release.tar.gz -C /app/src --strip-components=1 && \ rm release.tar.gz RUN rclone config -h RUN npm install -g pm2 # 设置工作目录到源码目录 WORKDIR /app/src # 返回到app根目录以复制脚本 WORKDIR /app RUN rm -f /app/src/utils/email_providers/generator_email_service.py COPY generator_email_service.py /app/src/utils/email_providers/generator_email_service.py # 复制脚本目录 COPY scripts /app/scripts COPY bootstrap.py /app/src/bootstrap.py COPY message_producer.py /app/src/message_producer.py # 设置脚本可执行权限 RUN chmod +x /app/scripts/entrypoint.sh RUN chmod +x /app/scripts/backup.sh RUN echo "3 2 * * * root /app/scripts/backup.sh" > /etc/cron.d/backup RUN chmod 0644 /etc/cron.d/backup RUN crontab /etc/cron.d/backup COPY nginx.conf /etc/nginx/nginx.conf COPY apps.conf /etc/nginx/conf.d/apps.conf # 设置工作目录回到源码目录 WORKDIR /app/src # 安装项目依赖 RUN pip install --no-cache-dir -r requirements.txt RUN pip install pika # 暴露端口(根据项目需要调整) EXPOSE 5700 # 使用自定义脚本作为入口点 ENTRYPOINT ["/app/scripts/entrypoint.sh"]