|
@@ -1,32 +1,46 @@
|
|
|
-FROM node:24-alpine AS node_builder
|
|
|
-
|
|
|
FROM python:3.11-slim
|
|
|
+
|
|
|
WORKDIR /app
|
|
|
|
|
|
-ENV PYTHONDONTWRITEBYTECODE 1
|
|
|
-ENV PYTHONUNBUFFERED 1
|
|
|
+# 环境变量
|
|
|
+ENV PYTHONDONTWRITEBYTECODE=1
|
|
|
+ENV PYTHONUNBUFFERED=1
|
|
|
ENV PIP_DISABLE_PIP_VERSION_CHECK=on
|
|
|
+ENV NVM_DIR=/root/.nvm
|
|
|
|
|
|
-# 安装依赖 + 拷贝 Node.js 和 npm
|
|
|
+# 安装依赖并使用 nvm 安装 Node.js v24
|
|
|
RUN apt-get update && \
|
|
|
- apt-get install -y --no-install-recommends curl gcc libpq-dev ca-certificates && \
|
|
|
+ apt-get install -y --no-install-recommends \
|
|
|
+ curl \
|
|
|
+ gcc \
|
|
|
+ libpq-dev \
|
|
|
+ ca-certificates \
|
|
|
+ bash \
|
|
|
+ gnupg \
|
|
|
+ make \
|
|
|
+ build-essential \
|
|
|
+ openssl \
|
|
|
+ xz-utils && \
|
|
|
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash && \
|
|
|
+ . "$NVM_DIR/nvm.sh" && \
|
|
|
+ nvm install 24 && \
|
|
|
+ nvm alias default 24 && \
|
|
|
+ nvm use default && \
|
|
|
+ ln -s "$NVM_DIR/versions/node/$(ls $NVM_DIR/versions/node)/bin/node" /usr/bin/node && \
|
|
|
+ ln -s "$NVM_DIR/versions/node/$(ls $NVM_DIR/versions/node)/bin/npm" /usr/bin/npm && \
|
|
|
+ ln -s "$NVM_DIR/versions/node/$(ls $NVM_DIR/versions/node)/bin/npx" /usr/bin/npx && \
|
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
|
|
-# 从 node_builder 拷贝 node 和 npm 到系统路径
|
|
|
-COPY --from=node_builder /usr/local/bin/node /usr/local/bin/
|
|
|
-COPY --from=node_builder /usr/local/bin/npm /usr/local/bin/
|
|
|
-COPY --from=node_builder /usr/local/lib/node_modules /usr/local/lib/node_modules
|
|
|
-
|
|
|
-# 验证 node 和 npm 是否安装成功(可选)
|
|
|
+# 验证 node/npm(可选)
|
|
|
RUN node -v && npm -v
|
|
|
|
|
|
-
|
|
|
+# 安装 Python 依赖
|
|
|
COPY requirements.txt .
|
|
|
RUN pip install --no-cache-dir -r requirements.txt
|
|
|
|
|
|
+# 拷贝项目文件
|
|
|
COPY . .
|
|
|
|
|
|
EXPOSE 6060
|
|
|
|
|
|
CMD ["hypercorn", "task_app:app", "--config", "app_config.toml"]
|
|
|
-
|