`make install` Fails Inside Docker - PullRequest
       86

`make install` Fails Inside Docker

1 голос
/ 31 января 2020

Я пытаюсь создать docker образ для прокси JMAP с именем 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 в папку проекта root и скопировал все на наш 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 внутри директории root проекта уже содержит раздел для install: all.

Нужно ли что-то изменить в Makefile или шагах, которые я выполняю? работает в моем Dockerfile?

1 Ответ

4 голосов
/ 31 января 2020

Здесь нужно отметить 2 вещи:

  1. Для этого ADD . / ./jmap-perl/ вместо ADD следует использовать COPY: COPY . /jmap-perl/
  2. Вместо использования RUN cd /jmap-perl , вы должны использовать WORKDIR /jmap-perl, чтобы последующие команды выполнялись в папке jmap-perl. cd в пределах прогона будет иметь эффект только в пределах этой единственной команды RUN.

Надеюсь, это поможет:)

...