Dockerfile 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # 使用Ubuntu 20.04作为基础镜像,提供更好的兼容性和稳定性
  2. FROM ubuntu:20.04 AS builder
  3. # 设置环境变量,避免交互式安装
  4. ENV DEBIAN_FRONTEND=noninteractive
  5. # 更新软件包列表并安装必要的依赖
  6. RUN apt-get update && apt-get install -y \
  7. wget \
  8. dpkg \
  9. libpng16-16 \
  10. libjpeg-turbo8 \
  11. libfontconfig1 \
  12. libfreetype6 \
  13. libglib2.0-0 \
  14. libxrender1 \
  15. libxext6 \
  16. && rm -rf /var/lib/apt/lists/*
  17. # 下载并安装pdf2htmlEX
  18. # 注意:pdf2htmlEX官方仓库已停止维护,这里使用的是已知稳定的版本
  19. WORKDIR /tmp
  20. # 下载pdf2htmlEX依赖包和主程序
  21. RUN wget -q https://github.com/pdf2htmlEX/pdf2htmlEX/releases/download/v0.18.8.rc1/pdf2htmlEX-0.18.8.rc1-master-20200630-Ubuntu-focal-x86_64.deb
  22. # 安装pdf2htmlEX
  23. RUN dpkg -i pdf2htmlEX-0.18.8.rc1-master-20200630-Ubuntu-focal-x86_64.deb || apt-get -f install -y
  24. # 清理临时文件
  25. RUN rm -rf /tmp/*.deb
  26. # 第二阶段:创建运行时镜像
  27. FROM ubuntu:20.04
  28. # 设置环境变量
  29. ENV DEBIAN_FRONTEND=noninteractive
  30. ENV PYTHONUNBUFFERED=1
  31. # 安装运行时依赖
  32. RUN apt-get update && apt-get install -y \
  33. python3 \
  34. python3-pip \
  35. libpng16-16 \
  36. libjpeg-turbo8 \
  37. libfontconfig1 \
  38. libfreetype6 \
  39. libglib2.0-0 \
  40. libxrender1 \
  41. libxext6 \
  42. && rm -rf /var/lib/apt/lists/*
  43. # 从builder阶段复制pdf2htmlEX
  44. COPY --from=builder /usr/bin/pdf2htmlEX /usr/bin/pdf2htmlEX
  45. COPY --from=builder /usr/share/pdf2htmlEX /usr/share/pdf2htmlEX
  46. # 创建工作目录
  47. WORKDIR /app
  48. # 复制Python脚本
  49. COPY main.py .
  50. # 设置卷,允许挂载外部目录
  51. VOLUME [ "/app" ]
  52. # 设置入口点,允许传递命令行参数
  53. # 使用ENTRYPOINT + CMD组合,允许用户覆盖默认行为
  54. ENTRYPOINT [ "python3", "/app/main.py" ]
  55. # 默认命令(空参数,使用脚本默认值)
  56. CMD [ ]