我是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$
有谁能告诉我如何解决这个问题。
答案 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
,我们可以直接从网址添加,但不需要wget
。 make
实用程序有一个-C
选项,用于指定make
的工作目录。
这可以让你更接近你所追求的。但是由于其他原因,构建仍然失败(如果你遇到困难,你可能会提出另一个问题)。