update to orca

This commit is contained in:
mm644706215
2025-01-17 00:07:30 +08:00
parent 989b014997
commit d444199990
4 changed files with 167 additions and 0 deletions

4
.env Normal file
View File

@@ -0,0 +1,4 @@
DOCKERFILE=Dockerfile.dev
TAG=dev
ENV=dev
PORT=8081

4
.envprod Normal file
View File

@@ -0,0 +1,4 @@
DOCKERFILE=Dockerfile.prod
TAG=prod
ENV=prod
PORT=8080

47
docker-compose.yml Normal file
View File

@@ -0,0 +1,47 @@
version: '3.9'
# 定义通用的环境变量
x-env: &common_env
O3_BABEL_PATH: "/usr/bin"
O3_GNUPLOT: "/usr/bin/gnuplot"
O3_PYMOL: "/usr/bin/pymol"
O3_TEMP_PATH: "/tmp"
O3_QM_ENGINE: "/opt/orca/orca"
O3_MD_GRID_PATH: "/usr/bin/mdgrid"
O3_CS3D: "/usr/bin/cs3d"
services:
# 基础服务
open3dqsar:
build:
context: docker
dockerfile: ${DOCKERFILE}
image: hotwa/open3dqsar:${TAG}
container_name: open3dqsar_${ENV}
environment:
<<: *common_env # 引用通用的环境变量
ENV: ${ENV} # 动态设置 ENV 变量
volumes:
- ./data:/Open3DQSAR/data
ports:
- "${PORT}:8080"
# 开发环境服务
open3dqsar_dev:
profiles: ["dev"] # 开发环境 profile
extends:
service: open3dqsar
environment:
<<: *common_env # 引用通用的环境变量
ENV: dev # 开发环境标识
volumes:
- ./src/Open3DQSAR:/Open3DQSAR # 映射源代码目录,便于开发调试
# 生产环境服务
open3dqsar_prod:
profiles: ["prod"] # 生产环境 profile
extends:
service: open3dqsar
environment:
<<: *common_env # 引用通用的环境变量
ENV: prod # 生产环境标识

112
docker/Dockerfile.dev Normal file
View File

@@ -0,0 +1,112 @@
# 第一阶段:构建阶段
FROM ubuntu:22.04 AS builder
# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive
# 更新系统、安装依赖并清理缓存
RUN apt update && apt upgrade -y && \
apt install -y \
build-essential \
gcc \
g++ \
gfortran \
cmake \
make \
wget \
tar \
libatlas-base-dev \
liblapacke-dev \
libblas-dev \
git \
libedit-dev \
zlib1g-dev \
openbabel \
libeigen3-dev \
automake \
autoconf \
libtool \
vim \
gnuplot \
pymol \
bzip2 \
&& ln -s /usr/bin/obabel /usr/bin/babel \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
# 安装 OpenMPI
COPY openmpi-4.1.6.tar.bz2 /
RUN tar -xf openmpi-4.1.6.tar.bz2 && \
cd openmpi-4.1.6 && \
./configure --prefix=/opt/openmpi --disable-builtin-atomics && \
make -j$(nproc) && \
make install && \
cd .. && \
rm -rf openmpi-4.1.6 openmpi-4.1.6.tar.bz2
# 设置 OpenMPI 环境变量
ENV PATH="/opt/openmpi/bin:$PATH" \
LD_LIBRARY_PATH="/opt/openmpi/lib:$LD_LIBRARY_PATH"
# 克隆 Open3DQSAR 仓库
RUN git clone https://github.com/UnixJunkie/Open3DQSAR
# 安装 ORCA
COPY orca_6_0_0_linux_x86-64_avx2_shared_openmpi416.tar.xz /
RUN tar -xf orca_6_0_0_linux_x86-64_avx2_shared_openmpi416.tar.xz && \
mv orca_6_0_0_shared_openmpi416_avx2 /opt/orca && \
rm orca_6_0_0_linux_x86-64_avx2_shared_openmpi416.tar.xz
# 进入 Open3DQSAR 目录并构建
WORKDIR /Open3DQSAR/open3dqsar
RUN ./bootstrap && \
./configure --with-atlas && \
make -j$(nproc) && \
make install
# 设置 ORCA 环境变量
ENV PATH="/opt/orca:$PATH" \
LD_LIBRARY_PATH="/opt/orca:$LD_LIBRARY_PATH"
# 第二阶段:运行阶段
FROM ubuntu:22.04
# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive \
O3_BABEL_PATH=/usr/bin \
O3_GNUPLOT=/usr/bin/gnuplot \
O3_PYMOL=/usr/bin/pymol \
O3_TEMP_PATH=/tmp \
O3_QM_ENGINE=/opt/orca/orca \
O3_MD_GRID_PATH=/usr/bin/mdgrid \
O3_CS3D=/usr/bin/cs3d
# 安装运行时依赖
RUN apt update && apt install -y \
libatlas-base-dev \
liblapacke-dev \
libblas-dev \
openbabel \
gnuplot \
pymol \
bzip2 \
&& ln -s /usr/bin/obabel /usr/bin/babel \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
# 从构建阶段复制构建结果
COPY --from=builder /usr/local/bin /usr/local/bin
COPY --from=builder /Open3DQSAR /Open3DQSAR
COPY --from=builder /opt/openmpi /opt/openmpi
COPY --from=builder /opt/orca /opt/orca
# 设置 OpenMPI 和 ORCA 环境变量
ENV PATH="/opt/openmpi/bin:/opt/orca:$PATH" \
LD_LIBRARY_PATH="/opt/openmpi/lib:/opt/orca:$LD_LIBRARY_PATH"
# 进入测试目录并运行测试脚本
WORKDIR /Open3DQSAR/open3dqsar/test
RUN ./test.sh > test.log 2>&1 &
# 设置容器启动时的默认命令(保持容器运行)
ENTRYPOINT ["tail", "-f", "/dev/null"]