`make install` 内部失败 Docker
`make install` Fails Inside Docker
我正在尝试为名为 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/
- 您应该使用
WORKDIR /jmap-perl
而不是 RUN cd /jmap-perl
,这样后续命令将在 jmap-perl
文件夹中执行。 运行 中的 cd
仅在该单个 运行 命令中有效。
希望对您有所帮助:)
我正在尝试为名为 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"]
我已将此 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/
- 您应该使用
WORKDIR /jmap-perl
而不是RUN cd /jmap-perl
,这样后续命令将在jmap-perl
文件夹中执行。 运行 中的cd
仅在该单个 运行 命令中有效。
希望对您有所帮助:)