#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
, у вас не будет никаких сюрпризов. Просто cdcd /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
.