在Docker构建中如何进行configure、make和make install操作

4

问题陈述

我正在构建一个计算生物信息学流水线的docker,其中包含许多在流水线不同步骤中调用的工具。在此过程中,我尝试添加一个The ViennaRNA Package,它将使用源代码下载和编译。我尝试了许多方法来在docker构建中编译它(如下所示),但都没有成功。

失败的尝试

Code-1 :

FROM jupyter/scipy-notebook

USER root

MAINTAINER Vivek Ruhela <vivekr@iiitd.ac.in>

# Copy the application folder inside the container
ADD . /test1

# Set the default directory where CMD will execute
WORKDIR /test1

# Set environment variable
ENV HOME /test1 

# Install RNAFold
RUN wget https://www.tbi.univie.ac.at/RNA/download/sourcecode/2_4_x/ViennaRNA-2.4.14.tar.gz -P ~/Tools
RUN tar xvzf ~/Tools/ViennaRNA-2.4.14.tar.gz -C ~/Tools  
WORKDIR "~/Tools/ViennaRNA-2.4.14/"
RUN ./configure
RUN make && make check && make install 

错误:配置文件未找到 代码-2:
FROM jupyter/scipy-notebook

USER root

MAINTAINER Vivek Ruhela <vivekr@iiitd.ac.in>

# Copy the application folder inside the container
ADD . /test1

# Set the default directory where CMD will execute
WORKDIR /test1

# Set environment variable
ENV HOME /test1 

# Install RNAFold
RUN wget https://www.tbi.univie.ac.at/RNA/download/sourcecode/2_4_x/ViennaRNA-2.4.14.tar.gz -P ~/Tools
RUN tar xvzf ~/Tools/ViennaRNA-2.4.14.tar.gz -C ~/Tools  
RUN bash ~/Tools/ViennaRNA-2.4.14/configure
WORKDIR "~/Tools/ViennaRNA-2.4.14/"
RUN make && make check && make install 

错误:make: *** 没有指定目标和找不到 makefile。停止。
我还尝试了另一种方式,明确告诉文件位置,例如:
RUN make -C ~/Tools/ViennaRNA-2.4.14/

这种方法仍然无效。

期望的过程

我已经按照工具文档中提到的标准过程多次在我的系统中安装了这个工具。

./configure
make
make check
make install

同样地,对于Docker而言,以下代码应该可以工作。
WORKDIR ~/Tools/ViennaRNA-2.4.14/
RUN ./configure && make && make check && make install

但是这段代码没有生效,因为我没有看到workdir的影响。我已经检查过配置是否在我的系统中正确地创建makefile。因此,它也应该在docker中创建make文件。 关于为什么这段代码不起作用的任何建议。

1个回答

3

你需要提取home文件夹下的Tools文件夹中的所有文件,试试这个方法:

WORKDIR $HOME/Tools/ViennaRNA-2.4.14
RUN ./configure
RUN make && make check && make install 

问题是,WORKDIR ~/Tools/ViennaRNA-2.4.14/ 被翻译成了准确的 ~/Tools/ViennaRNA-2.4.14/,这会创建一个名为~的文件夹,您也可以使用 $HOME 代替。

我犯了一个非常小而愚蠢的错误。它起作用了。谢谢。我本应该在浪费一个半小时解决这个问题之前先问一下。再次感谢。现在我会将其标记为正确答案。 - Lot_to_learn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接