# 多阶段构建：Python + Node.js 全栈应用
FROM hb.eazytec-cloud.com/eazytec/eazydevelop-python-node:ubuntu22.04-python3.11-node22 AS python-base

# 设置工作目录
WORKDIR /app

# 复制 Python 后端文件
COPY backend/ /app/backend/
COPY .resource/ /app/.resource/

# 设置环境变量
ENV RESOURCE_PATH=/app/.resource/resource_deploy.json

# 安装 Python 依赖
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/ && \
    pip install --no-cache-dir -r backend/requirements.txt

# Node.js 阶段
FROM hb.eazytec-cloud.com/eazytec/eazydevelop-python-node:ubuntu22.04-python3.11-node22 AS  node-base
# 设置工作目录
WORKDIR /app

# 复制 Node.js 前端文件
COPY frontend/ /app/frontend/
COPY .resource/ /app/.resource/

# 设置环境变量
ENV RESOURCE_PATH=/app/.resource/resource_deploy.json
ENV NODE_ENV=production

# 安装 Node.js 依赖
RUN cd frontend && npm config set registry https://registry.npmmirror.com && \
    npm install --production

# 最终阶段：合并两个服务
FROM hb.eazytec-cloud.com/eazytec/eazydevelop-python-node:ubuntu22.04-python3.11-node22

# 设置工作目录
WORKDIR /app

# 复制 Python 后端
COPY --from=python-base /app/backend/ /app/backend/
COPY --from=python-base /usr/local/lib/python3.11/site-packages/ /usr/local/lib/python3.11/site-packages/

# 复制 Node.js 前端
COPY --from=node-base /app/frontend/ /app/frontend/
COPY --from=node-base /usr/local/bin/node /usr/local/bin/node
COPY --from=node-base /usr/local/bin/npm /usr/local/bin/npm
COPY --from=node-base /usr/local/lib/node_modules/ /usr/local/lib/node_modules/

# 复制资源文件
COPY .resource/ /app/.resource/

# 设置环境变量
ENV RESOURCE_PATH=/app/.resource/resource_deploy.json
ENV PYTHONPATH=/app/backend
ENV NODE_ENV=production

# 创建启动脚本
RUN echo '#!/bin/bash\n\
# 启动 Python 后端\n\
cd /app/backend && python app.py &\n\
# 启动 Node.js 前端\n\
cd /app/frontend && node server.js &\n\
# 等待所有后台进程\n\
wait' > /app/start.sh && chmod +x /app/start.sh

# 暴露端口
EXPOSE $APP_PORT_1 $APP_PORT_2

# 启动命令
CMD ["/app/start.sh"]
