123456789101112131415161718192021222324252627282930313233343536 |
- 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 和 canvas
- 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 canvas && \
- rm -rf /var/lib/apt/lists/*
- # 验证(可选)
- RUN node -v && npm -v && node -p "require('canvas')" && 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"]
|