# ============ 构建阶段 ============ FROM ubuntu:24.04 AS builder ENV DEBIAN_FRONTEND=noninteractive # 配置镜像源(使用阿里云镜像) RUN </dev/null || echo "build/python 目录不存在" echo "检查根目录的 setup.py:" ls -la setup.py 2>/dev/null || echo "根目录没有 setup.py" # 尝试在根目录构建 if [ -f "setup.py" ]; then echo "在根目录构建 wheel 包..." /opt/build-venv/bin/python setup.py bdist_wheel else echo "在 build/python 目录构建 wheel 包..." cd build/python /opt/build-venv/bin/python setup.py bdist_wheel fi echo "构建完成,查找所有 wheel 文件:" find /tmp/AutoDock-Vina -name "*.whl" -type f mkdir -p /wheels find /tmp/AutoDock-Vina -name "*.whl" -type f -exec cp {} /wheels/ \; echo "复制的 wheel 文件:" ls -la /wheels/ EOF # 编译二进制可执行文件 RUN < /entrypoint.sh << 'SCRIPT_EOF' #!/bin/bash echo "AutoDock Vina 环境已准备就绪 (Ubuntu 24.04 + Python 3.12 + Boost 1.83.0)" echo "虚拟环境: \$(which python)" echo "Python 版本: \$(python --version 2>&1)" echo "Python 绑定测试:" python -c "from vina import Vina; print('Vina Python 绑定可用')" 2>/dev/null || echo "Python 绑定不可用" echo "命令行工具: vina --version" vina --version 2>/dev/null || echo "vina 命令不可用" echo "Boost 库信息:" ldd /usr/local/bin/vina | grep boost || echo "无法获取 Boost 信息" if [ "\$#" -eq 0 ]; then echo "进入交互模式..." exec /bin/bash else echo "执行命令: \$@" exec "\$@" fi SCRIPT_EOF chmod +x /entrypoint.sh EOF # 设置入口点 ENTRYPOINT ["/entrypoint.sh"] # 默认命令 CMD ["bash"]