gctl/Dockerfile
2025-05-10 22:38:33 +08:00

41 lines
1.4 KiB
Docker

# 编译平台
FROM ubuntu:20.04 AS builder
# 安装编译工具
RUN apt-get update && apt-get install -y g++ make cmake
# 安装依赖库
RUN apt-get install -y libfftw3-dev libnetcdf-dev gmt libgmt-dev libgsl-dev libncurses-dev
# 创建工作目录
WORKDIR /gctl
# 1. 编译安装EEMD
# 拷贝libeemd相关内容
COPY dep/libeemd /gctl/dep/libeemd
# 编译安装libeemd
RUN mkdir /gctl/dep/libeemd/build && cd /gctl/dep/libeemd/build && cmake .. && make && make install
# 2. 编译安装netcdfcxx_legacy
# 拷贝netcdfcxx_legacy相关内容
COPY dep/netcdfcxx_legacy /gctl/dep/netcdfcxx_legacy
# 编译安装netcdfcxx_legacy
RUN mkdir /gctl/dep/netcdfcxx_legacy/build && cd /gctl/dep/netcdfcxx_legacy/build && cmake .. && make && make install
# 3. 拷贝partow模版文件
COPY dep/partow/include /usr/local/include
# 将gctl源代码
COPY lib /gctl/lib
COPY CMakeLists.txt .
COPY config.h.in .
COPY GCTLConfig.cmake.in .
# 将CMake配置文件拷贝到系统路径
COPY dep/cmake /usr/local/lib/cmake
# 编译gctl动态库
RUN mkdir build && cd build && cmake .. -DGCTL_DOCKER=ON && make && make install
# 运行平台
FROM ubuntu:20.04
# 安装运行时必要依赖
RUN apt-get update && apt-get install -y libstdc++6
# 从构建阶段复制编译后的库和头文件
COPY --from=builder /usr/local/lib /usr/local/lib
COPY --from=builder /usr/local/include /usr/local/include