| FROM python:3.9-slim | |
| # Install system dependencies | |
| RUN apt-get update && apt-get install -y \ | |
| wget \ | |
| curl \ | |
| build-essential \ | |
| gcc \ | |
| g++ \ | |
| make \ | |
| libffi-dev \ | |
| libssl-dev \ | |
| libglib2.0-0 \ | |
| libxext6 \ | |
| libsm6 \ | |
| libxrender1 \ | |
| libgomp1 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| # Install Miniforge (conda-forge–based; no Anaconda ToS) and configure channels | |
| RUN wget -q https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh && \ | |
| bash Miniforge3-Linux-x86_64.sh -b -p /opt/conda && \ | |
| rm Miniforge3-Linux-x86_64.sh | |
| ENV PATH="/opt/conda/bin:${PATH}" | |
| # Add bioconda; conda-forge is default for Miniforge. No Anaconda ToS needed. | |
| RUN conda config --add channels bioconda && \ | |
| conda config --set channel_priority flexible | |
| # Install mamba for faster package installation | |
| RUN conda install -n base -c conda-forge mamba -y | |
| # Install AMBER tools, PyMOL, AutoDock Vina 1.1.2, Open Babel, RDKit, and gemmi (for Meeko) | |
| RUN mamba install -y python=3.11 \ | |
| conda-forge::ambertools conda-forge::pymol-open-source \ | |
| bioconda::autodock-vina conda-forge::openbabel conda-forge::rdkit conda-forge::gemmi | |
| # Clean up conda/mamba cache to reduce image size | |
| RUN conda clean -afy | |
| # Install Python packages via pip (only packages not provided by conda or that need pip) | |
| # Note: numpy, pandas, matplotlib are already installed by conda; don't override to avoid conflicts | |
| RUN pip install --no-cache-dir \ | |
| flask==2.3.3 \ | |
| flask-cors==4.0.0 \ | |
| biopython \ | |
| seaborn \ | |
| mdanalysis \ | |
| gunicorn==21.2.0 \ | |
| requests \ | |
| meeko>=0.7.0 \ | |
| prody \ | |
| "numpy<2.0" | |
| # Set working directory | |
| WORKDIR /AmberPrep | |
| # Copy the entire project | |
| COPY . . | |
| # Create necessary directories with proper permissions | |
| RUN mkdir -p /AmberPrep/obsolete /AmberPrep/pdb /AmberPrep/temp /AmberPrep/output && \ | |
| chmod -R 777 /AmberPrep | |
| # Make sure the amberprep package is on the Python path | |
| ENV PYTHONPATH="${PYTHONPATH}:/AmberPrep" | |
| # Expose the port | |
| EXPOSE 7860 | |
| # Run the application | |
| CMD ["python", "start_web_server.py"] | |