Получение ошибки «can’t cd» при сборке с использованием dockerfile

#node.js #ubuntu #docker

#node.js #ubuntu #docker

Вопрос:

Это полный dockerfile

 FROM ubuntu:12.04

# Create directory 
RUN mkdir -p /dir/subdir

# Download wget
RUN apt-get install -y wget

# Make sure package is up to date
RUN apt-get update

# Install nodejs
WORKDIR /dir
RUN wget http://nodejs.org/dist/v0.10.26/node-v0.10.26-linux-x64.tar.gz
RUN tar -zxf node-v0.10.26-linux-x64.tar.gz
RUN cd /node-v0.10.26-linux-x64 amp;amp; ./configure
RUN cd /node-v0.10.26-linux-x64 amp;amp; make
RUN cd /node-v0.10.26-linux-x64 amp;amp; make install

# Update again
RUN apt-get-update

# Copy all the files 
ADD dir/subdir dir/subdir

EXPOSE 8080
CMD ["node", "/dir/subdir/index.js"]
 

Это часть журнала, в котором появляется ошибка

 Step 6 : RUN tar -zxf node-v0.10.26-linux-x64.tar.gz 
---> Running in xxxxxxx 
---> xxxxxxxxxxxxxx
Removing intermediate container xxxxxxxxxxxx
Step 7 : RUN cd /node-v0.10.26-linux-x64 amp;amp; ./configure 
---> Running in xxxxxxxx
[91m/bin/sh: 1: cd: can't cd to /node-v0.10.26-linux-x64
 [0m 
The command [/bin/sh -c cd /node-v0.10.26-linux-x64 amp;amp; ./configure] returned a non-zero   code: 2
 

Кто-нибудь знает, что означает ошибка 2 и как ее исправить?

Комментарии:

1. Можете ли вы опубликовать фактический Dockerfile и журналы вашей ошибки? код ошибки 2 обычно является ошибкой оболочки, но может быть любым. Журналы сообщат вам.

2. Я считаю, что лучший способ отладки dockerfiles — это закомментировать проблемную строку и все, что за ней. Затем создайте образ и запустите в нем сеанс sh. Попробуйте выполнить команду вручную.

3. да, я сделаю это на секунду

4. Кроме того, поскольку вам не нужно проходить аутентификацию, вы можете сжать RUN wget и ЗАПУСТИТЬ tar с помощью ADD, ADD загрузит и распакует / gz a tar.gz url-адрес.

5. @generalhenry итак, я выполнил команду, которая завершается с ошибкой, и она выдает мне следующую ошибку: ./configure: нет такого файла или каталога

Ответ №1:

На этот раз я протестировал это.

 FROM ubuntu:12.04

# Create directory 
RUN mkdir -p /dir/subdir

# Make sure package is up to date
RUN apt-get update

# Install dependencies
RUN apt-get install -y build-essential openssl libssl-dev pkg-config python 

# Install nodejs
WORKDIR /dir
ADD http://nodejs.org/dist/v0.10.29/node-v0.10.29.tar.gz /dir/
RUN tar -zxf node-v0.10.29.tar.gz
WORKDIR /dir/node-v0.10.29
RUN ./configure amp;amp; make amp;amp; make install
WORKDIR /dir

# Copy all the files 
ADD dir/subdir dir/subdir

EXPOSE 8080
CMD ["node", "/dir/subdir/index.js"]
 

Комментарии:

1. Спасибо, я собираюсь попробовать

2. Я получаю эту ошибку в своем журнале Шаг 4: ДОБАВИТЬ nodejs.org/dist/v0.10.26/node-v0.10.26-linux-x64.tar.gz Недопустимый формат добавления

3. nvm Я забыл кое-что добавить

4. Да, у меня тоже может быть ошибка, проверьте add docs, если вы застряли docs.docker.com/reference/builder/#add

5. Я бы не стал добавлять магию автоматической загрузки / автоматического удаления. Придерживайтесь wget , у вас не будет никаких сюрпризов. Просто cd cd /dir/node-v0.10.26-linux-x64 вместо cd /node-v0.10.26-linux-x64 вашего exmaple, и это должно сработать.

Ответ №2:

Docker (v1.0.0) будет использоваться WORKDIR для последующего RUN . cd /node-v0.10.26-linux-x64 не будет работать, поскольку произошел сбой /dir .