11# 构建器阶段
2- # 使用node:current-alpine3.21作为基础镜像
3- FROM node:current-alpine3.21 AS builder
2+ # 使用node:20-alpine(17 < version < 23)作为基础镜像
3+ FROM node:20-alpine AS builder
44
55# 安装git
66RUN apk add --no-cache git
@@ -14,18 +14,14 @@ WORKDIR /app
1414# 克隆GitHub仓库到工作目录
1515RUN git clone https://github.com/hjdhnx/drpy-node.git .
1616
17- # 设置npm镜像为npmmirror
18- RUN npm config set registry https://registry.npmmirror.com
19-
20- # 全局安装pm2工具(yarn已经自带了不需要再自己装)
21- RUN npm install -g pm2
22-
2317# 安装项目依赖项和puppeteer
2418RUN yarn && yarn add puppeteer
2519
2620# 复制工作目录中的所有文件到一个临时目录中
2721# 以便在运行器阶段中使用
28- RUN mkdir /tmp/drpys && cp -r /app/* /tmp/drpys/
22+ RUN mkdir -p /tmp/drpys && \
23+ cp -r /app/. /tmp/drpys/
24+
2925
3026# 运行器阶段
3127# 使用alpine:latest作为基础镜像来创建一个更小的镜像
@@ -36,13 +32,28 @@ FROM alpine:latest AS runner
3632WORKDIR /app
3733
3834# 复制构建器阶段中准备好的文件和依赖项到运行器阶段的工作目录中
39- COPY --from=builder /tmp/drpys /app
35+ COPY --from=builder /tmp/drpys/. /app
36+ RUN cp /app/.env.development /app/.env && \
37+ rm -f /app/.env.development && \
38+ sed -i 's|^VIRTUAL_ENV[[:space:]]*=[[:space:]]*$|VIRTUAL_ENV=/app/.venv|' /app/.env && \
39+ echo '{"ali_token":"","ali_refresh_token":"","quark_cookie":"","uc_cookie":"","bili_cookie":"","thread":"10","enable_dr2":"1","enable_py":"2"}' > /app/config/env.json
4040
4141# 安装Node.js运行时(如果需要的话,这里已经假设在构建器阶段中安装了所有必要的Node.js依赖项)
4242# 由于我们已经将node_modules目录复制到了运行器阶段,因此这里不需要再次安装npm或node_modules中的依赖项
4343# 但是,我们仍然需要安装Node.js运行时本身(除非drpys项目是一个纯静态资源服务,不需要Node.js运行时)
4444RUN apk add --no-cache nodejs
4545
46+ # 安装python3依赖
47+ RUN apk add --no-cache python3 \
48+ py3-pip \
49+ py3-setuptools \
50+ py3-wheel
51+
52+ # 激活python3虚拟环境并安装依pip3赖
53+ RUN python3 -m venv /app/.venv && \
54+ . /app/.venv/bin/activate && \
55+ pip3 install -r /app/spider/py/base/requirements.txt
56+
4657# 暴露应用程序端口(根据您的项目需求调整)
4758EXPOSE 5757
4859
0 commit comments