FROM python:3.11-slim WORKDIR /app ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV PIP_DISABLE_PIP_VERSION_CHECK=on ENV NVM_DIR=/root/.nvm # 安装依赖 + 安装 node + 安装 jsdom RUN apt-get update && \ apt-get install -y --no-install-recommends \ curl gcc libpq-dev ca-certificates bash gnupg make build-essential openssl xz-utils \ pkg-config libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev librsvg2-dev && \ 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 && \ . "$NVM_DIR/nvm.sh" && nvm use default && npm install -g jsdom && \ rm -rf /var/lib/apt/lists/* # 验证(可选) RUN node -v && npm -v && node -p "require('jsdom')" COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 6060 CMD ["hypercorn", "task_app:app", "--config", "app_config.toml"]