Dockerfile 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. FROM python:3.11-slim
  2. WORKDIR /app
  3. ENV PYTHONDONTWRITEBYTECODE=1
  4. ENV PYTHONUNBUFFERED=1
  5. ENV PIP_DISABLE_PIP_VERSION_CHECK=on
  6. ENV NVM_DIR=/root/.nvm
  7. # 安装依赖 + 安装 node + 安装 jsdom 和 canvas
  8. RUN apt-get update && \
  9. apt-get install -y --no-install-recommends \
  10. curl gcc libpq-dev ca-certificates bash gnupg make build-essential openssl xz-utils \
  11. pkg-config libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev librsvg2-dev && \
  12. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash && \
  13. . "$NVM_DIR/nvm.sh" && \
  14. nvm install 24 && \
  15. nvm alias default 24 && \
  16. nvm use default && \
  17. ln -s "$NVM_DIR/versions/node/$(ls $NVM_DIR/versions/node)/bin/node" /usr/bin/node && \
  18. ln -s "$NVM_DIR/versions/node/$(ls $NVM_DIR/versions/node)/bin/npm" /usr/bin/npm && \
  19. ln -s "$NVM_DIR/versions/node/$(ls $NVM_DIR/versions/node)/bin/npx" /usr/bin/npx && \
  20. . "$NVM_DIR/nvm.sh" && nvm use default && npm install -g jsdom canvas && \
  21. rm -rf /var/lib/apt/lists/*
  22. # 验证(可选)
  23. RUN node -v && npm -v && node -p "require('canvas')" && node -p "require('jsdom')"
  24. COPY requirements.txt .
  25. RUN pip install --no-cache-dir -r requirements.txt
  26. COPY . .
  27. EXPOSE 6060
  28. CMD ["hypercorn", "task_app:app", "--config", "app_config.toml"]