温馨提示:本文翻译自stackoverflow.com,查看原文请点击:perl - `make install` Fails Inside Docker
docker makefile perl debian-jessie jmap

perl - `make install`在Docker内部失败

发布于 2020-03-27 16:02:06

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

文档指出它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"]

我已将其添加Dockerfile到项目的根文件夹,并将所有内容复制到我们的Docker服务器。

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

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或执行的步骤Dockerfile吗?

查看更多

查看更多

提问者
Floating Sunfish
被浏览
215
Nguyen Lam Phuc 2020-01-31 17:24

这里有两件事要注意:

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

希望它会有所帮助:)