diff --git a/Dockerfile b/Dockerfile index d28f04e..020eacf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ # 导入代码库镜像 视包含的代码库多少编译后的镜像可包含部分至全部GCTL代码库内容 -FROM gctl:2.0.9 AS gctl_library -FROM gctl_mesh:2.0.9 AS gctl_mesh_library -FROM gctl_optimization:2.0.9 AS gctl_optimization_library -FROM gctl_ai:2.0.9 AS gctl_ai_library -FROM gctl_potential:2.0.9 AS gctl_potential_library -FROM gctl_seismic:2.0.9 AS gctl_seismic_library -FROM gctl_elecmag:2.0.9 AS gctl_elecmag_library +FROM gctl:2.1 AS gctl_library +FROM gctl_mesh:2.1 AS gctl_mesh_library +FROM gctl_optimization:2.1 AS gctl_optimization_library +FROM gctl_ai:2.1 AS gctl_ai_library +FROM gctl_potential:2.1 AS gctl_potential_library +FROM gctl_seismic:2.1 AS gctl_seismic_library +FROM gctl_elecmag:2.1 AS gctl_elecmag_library # 编译平台 FROM ubuntu:20.04 AS builder # 从代码库镜像中复制库文件和头文件 @@ -24,13 +24,28 @@ COPY --from=gctl_ai_library /usr/local/include /usr/local/include COPY --from=gctl_library /usr/local/lib /usr/local/lib COPY --from=gctl_library /usr/local/include /usr/local/include -# 安装编译工具 -RUN apt-get update && apt-get install -y g++ make cmake -# 安装依赖库 -RUN apt-get install -y --no-install-recommends libfftw3-dev libnetcdf-dev gmt libgmt-dev libgsl-dev libncurses-dev -RUN apt-get install -y --no-install-recommends libopenblas-dev libeigen3-dev -RUN apt-get install -y pkg-config -RUN apt-get install -y autoconf automake +# 避免交互提示 +ENV DEBIAN_FRONTEND=noninteractive + +# 安装编译工具和依赖 +RUN apt-get update && apt-get install -y --no-install-recommends \ + g++ \ + make \ + cmake \ + libfftw3-dev \ + libnetcdf-dev \ + gmt \ + libgmt-dev \ + libgsl-dev \ + libncurses-dev \ + libopenblas-dev \ + liblapacke-dev \ + libeigen3-dev \ + pkg-config \ + autoconf \ + automake \ + && rm -rf /var/lib/apt/lists/* + # 创建工作目录 WORKDIR /app @@ -83,18 +98,26 @@ RUN mkdir build && cd build && cmake .. && make && make install FROM ubuntu:20.04 # 设置非交互式安装 ENV DEBIAN_FRONTEND=noninteractive + # 安装运行时必要依赖 -RUN apt-get update && apt-get install -y g++ make cmake -RUN apt-get install -y --no-install-recommends libfftw3-dev libnetcdf-dev gmt libgmt-dev libgsl-dev libncurses-dev -RUN apt-get install -y --no-install-recommends libopenblas-dev libeigen3-dev -RUN apt-get install -y gnuplot -RUN apt-get install -y pkg-config -RUN apt-get install -y autoconf automake -RUN apt-get install -y ghostscript +RUN apt-get update && apt-get install -y --no-install-recommends \ + g++ make cmake \ + libfftw3-dev \ + libnetcdf-dev \ + gmt libgmt-dev \ + libgsl-dev \ + libncurses-dev \ + libopenblas-dev liblapacke-dev libeigen3-dev \ + gnuplot \ + pkg-config \ + autoconf automake \ + ghostscript \ + && rm -rf /var/lib/apt/lists/* + # 从构建阶段复制编译后的库和头文件 COPY --from=builder /usr/local/lib /usr/local/lib COPY --from=builder /usr/local/include /usr/local/include COPY --from=builder /usr/local/sbin /usr/local/sbin # 设置可执行文件列表 -ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib -ENV PATH=$PATH:/usr/local/sbin +ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH:-}:/usr/local/lib +ENV PATH=${PATH:-}:/usr/local/sbin