我正在尝试为名为 jmap-perl
的JMAP代理构建docker镜像。
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"]
我已将此
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
中运行的步骤吗?
最佳答案
这里有两件事要注意:
ADD . / ./jmap-perl/
,应使用COPY而不是ADD:COPY . /jmap-perl/
RUN cd /jmap-perl
而不是WORKDIR /jmap-perl
,以便在jmap-perl
文件夹内执行后续命令。运行中的cd
仅在单个RUN命令中有效。 希望它会有所帮助:)
关于docker - `make install`在Docker内部失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59999510/