标签: RDKit

  • 制作docker并上传至Docker Hub

    1.安装docker

    运行以下命令安装docker并查看docker版本,确认docker是否安装成功。

    #以root运行就不需要写sudo
    sudo apt-get update
    sudo apt-get install -y docker.io
    sudo systemctl start docker
    sudo systemctl enable docker
    docker --version
    
    

    2.准备应用,编写docker环境

    2.1 新建文件夹,将准备好Streamlit 应用代码

    ndsri_ai_calculator_optimized.py放入文件夹内,并在文件夹内新建Dockerfile和requirements.txt。

    project_folder/
    │
    ├── ndsri_ai_calculator_optimized.py
    ├── Dockerfile
    └── requirements.txt
    

    2.2根据Streamlit环境编写Dockerfile和requirements.txt

    2.2.2Dockerfile

    # 使用官方Python基础镜像(基于Debian)
    FROM python:3.12-slim
    
    # 设置工作目录
    WORKDIR /project
    
    # 复制应用代码到容器中
    COPY your_app.py .
    COPY requirements.txt .
    
    # 安装系统依赖(RDKit和绘图功能需要)
    RUN apt-get update && apt-get install -y \
        build-essential \
        libopenblas-dev \
        libxrender1 \
        libxext6 \
        libfontconfig1 \
        libcairo2 \
        && rm -rf /var/lib/apt/lists/*
    
    # 安装Python依赖
    RUN pip install --no-cache-dir -r requirements.txt
    
    # 暴露Streamlit默认端口
    EXPOSE 8501
    
    # 运行Streamlit应用
    CMD ["streamlit", "run", "your_app.py", "--server.port=8501", "--server.address=0.0.0.0"]
    

    注:RDKit所需包名及作用,不加运行代码时会出错

    包名主要作用在RDKit中的应用场景未来可能扩展用途
    build-essentialC/C++编译工具链编译RDKit源码优化、自定义模块开发
    libopenblas-dev高效矩阵运算库分子力场、3D构象计算大规模特征计算、机器学习
    libxrender12D图形渲染加速分子图绘制Web服务分子展示
    libxext6X11图形扩展支持分子图生成无头服务器绘图
    libfontconfig1字体管理元素符号标注高质量分子图输出
    libcairo22D图形绘制库生成PNG、SVG、PDF分子图自动化图像生成、报告制作

    2.2.3 requirements.txt

    内容为代码中需使用的包及版本

    streamlit==1.44.0
    rdkit==2024.9.6
    pandas==2.2.3
    numpy==1.26.4
    

    注:pandas依赖于numpy,不装numpy会报错。

    3.构建 Docker 镜像

    构建docker

    docker build -t your_app .
    

    运行容器

    docker images #列出本地镜像,用于检查镜像是否正确建立
    docker run -d -p 8501:8501 your_app #运行docker镜像,确认能否正常
    

    4.上传docker

    4.1 新建docker账户

    进入https://hub.docker.com/新建账户并验证邮箱

    4.2上传docker

    #1.输入账户名和密码登录Docker Hub
    docker login 
    #2.为镜像打标签,yourusername为Docker Hub的用户名
    docker tag your_app:latest yourusername/your_app:latest
    #3.将镜像推送到Docker Hub
    docker push yourusername/your_app:latest