首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Docker容器中找不到模块和二进制文件

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

Stack Overflow用户
提问于 2019-09-05 15:41:53
回答 1查看 106关注 0票数 1

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

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

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

代码语言:javascript
复制
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

当我运行时:

代码语言:javascript
复制
RUN ls $ECCODES_DIR
RUN grib_dump

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-05 15:53:57

您可以在/ecbuild中找到构建文件,但在/usr/local中找不到任何文件,因为您不会在cmake命令后运行makemake install

下面是Docs中的一个示例

代码语言:javascript
复制
> 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是默认设置

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57800649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档