`make install`在Docker内部失败

问题描述 投票:1回答:1

[我正在尝试为名为jmap-perl的JMAP代理构建docker映像。

jmap-perl声明默认情况下以documentation为目标,因此我创建了以下Debian Jessie

Dockerfile

我已将此FROM debian:jessie # Port to expose. EXPOSE 80 # Add all files in current directory # to a new folder named `jmap-perl` # in Debian Jessie's `/` folder. ADD . / ./jmap-perl/ # Install `build-essential` (needed for `make install`) and `perl`. # `apt-get update` is required to install `build-essential`. RUN apt-get update && apt-get install -y \ build-essential \ perl # Navigate to our new folder and run `make install`. RUN cd /jmap-perl RUN make install # Run the scripts needed by the server. CMD ["perl bin/apiendpoint.pl && perl bin/server.pl"] 添加到项目的根文件夹,并将所有内容复制到我们的Docker服务器。

在我们的Docker服务器上,我正在运行以下命令:

Dockerfile

一切顺利,直到命中cd jmap-perl docker build -t jmap-perl:latest . 命令,该命令会产生以下错误:

make install

让我感到困惑的是,项目根目录中的Step 6/7 : RUN make install ---> Running in 6209e8b71062 make: *** No rule to make target 'install'. Stop. The command '/bin/sh -c make install' returned a non-zero code: 2 已经包含Makefile的部分。

install: all中需要更改什么内容吗?Makefile中正在运行的步骤是否需要更改?

docker perl makefile debian-jessie jmap
1个回答
1
投票

这里有两件事要注意:

  1. 对于此Dockerfile,您应该使用COPY而不是ADD:ADD . / ./jmap-perl/
  2. 而不是使用COPY . /jmap-perl/,而应使用RUN cd /jmap-perl,以便随后的命令将在WORKDIR /jmap-perl文件夹中执行。运行中的jmap-perl仅在单个RUN命令中有效。

希望它会有所帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.