momo / Dockerfile
ghuser1's picture
Update Dockerfile
c5fa015 verified
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"]