gpt4 book ai didi

docker - 在 Docker 容器中找不到模块和二进制文件

转载 作者:行者123 更新时间:2023-12-02 19:02:49 24 4
gpt4 key购买 nike

我正在尝试使用我自己的一些代码设置一个 Docker 容器。它是一些 Fortran 代码,它对 grib 文件中的数据进行一些计算。那不是问题。一个依赖是 eccodes我需要在我的 Docker 容器中编译。当我构建容器时它编译得很好,但我不知道模块在哪里。它们不在通常的/usr/local 中。

在构建容器时,我通过查找“grib_dump”搜索了一些二进制文件,这是来自 eccodes 的一个可执行文件,但没有运气。

我正在使用这个 Dockerfile。我对 Docker 没有太多经验,所以也许我违反了一些最佳实践。

FROM ubuntu:18.04

RUN apt-get update
RUN apt-get -y install build-essential cmake wget

# HDF5
RUN apt-get -y install libhdf5-serial-dev

# NetCDF4
RUN apt-get -y install libnetcdf-dev

# gfortran
RUN apt-get -y install gfortran

RUN wget https://confluence.ecmwf.int/download/attachments/45757960/eccodes-2.13.1-Source.tar.gz
RUN tar -xzf eccodes-2.13.1-Source.tar.gz
ENV ECCODES_DIR /usr/local
RUN mkdir ecbuild && cd ecbuild && cmake -DCMAKE_INSTALL_PREFIX=$ECCODES_DIR ../eccodes-2.13.1-Source

RUN apt-get -y install python3-pip
# pip
RUN pip3 install schedule
RUN pip3 install netCDF4
RUN pip3 install f90nml

RUN ls $ECCODES_DIR
RUN grib_dump

WORKDIR /kfapp
COPY . /kfapp

RUN make

当我运行时:
RUN ls $ECCODES_DIR
RUN grib_dump

$ECCODES_DIR 中没有任何内容,并且未找到 grib_dump。我需要从 eccodes 链接模块文件,但是当它们不在 $ECCODES_DIR 中时,我不知道在哪里可以找到它们。

最佳答案

您可以在 /ecbuild 中找到您的构建文件
您在 /usr/local 中找不到任何内容因为你没有运行makemake install在您的 cmake 之后命令

这里是 Docs 的示例:

> tar -xzf  eccodes-x.y.z-Source.tar.gz
> mkdir build ; cd build

> cmake -DCMAKE_INSTALL_PREFIX=/path/to/where/you/install/eccodes ../eccodes-x.y.z-Source
...

> make
> ctest
> make install

PS:你也不需要设置 CMAKE_INSTALL_PREFIX因为 /usr/local是默认的

关于docker - 在 Docker 容器中找不到模块和二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57800649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com