使用perl安装构建docker镜像时出错

时间:2017-06-07 17:23:40

标签: docker

我是docker的新手,我正在尝试使用perl安装构建docker镜像,但不确定如何修复此错误。

Dockerfile:

FROM amazonlinux

RUN mkdir /shared
RUN cd /shared


RUN yum -y install sudo
RUN cd /shared
RUN echo "Installing Perl."
RUN sudo yum -y update; yum -y install gcc
RUN yum -y install wget
RUN wget http://www.cpan.org/src/5.0/perl-5.22.1.tar.gz
RUN tar -xzf perl-5.22.1.tar.gz
RUN cd perl-5.22.1
RUN /shared/perl-5.22.1/Configure -des -Dprefix=/opt/perl-5.22.1/localperl
RUN make
RUN make test
RUN make install
RUN echo "Perl installation complete."

而不是/shared/perl-5.22.1/Configure我试图给./configure但我得到相同的错误没有这样的文件或目录

错误:

/bin/sh: /shared/perl-5.22.1/Configure: No such file or directory
The command '/bin/sh -c /shared/perl-5.22.1/Configure -des -Dprefix=/opt/perl-5.22.1/localperl' returned a non-zero code: 127
ish-mac:testanalyse ish$ 

有谁能告诉我如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

每个Dockerfile RUN命令都在自己的shell中运行。因此,当您执行RUN cd /shared之类的操作时,后续的RUN命令将不会在该工作目录中运行。

在这种情况下,您要使用的是WORKDIR指令(https://docs.docker.com/engine/reference/builder/#workdir)。您还可以利用ADD指令来组合和缩短某些内容。更简洁Dockerfile做你想做的事情可能是:

FROM amazonlinux
WORKDIR /shared
RUN yum -y install gcc
ADD http://www.cpan.org/src/5.0/perl-5.22.1.tar.gz /shared
RUN tar -xzf perl-5.22.1.tar.gz
RUN /shared/perl-5.22.1/Configure -des -Dprefix=/opt/perl-5.22.1/localperl
RUN make -C /shared/perl-5.22.1
RUN make -C /shared/perl-5.22.1 test
RUN make -C /shared/perl-5.22.1 install

例如,构建上下文已经以root身份运行,因此不需要sudo。使用ADD,我们可以直接从网址添加,但不需要wgetmake实用程序有一个-C选项,用于指定make的工作目录。

这可以让你更接近你所追求的。但是由于其他原因,构建仍然失败(如果你遇到困难,你可能会提出另一个问题)。