Невозможно установить Nodejs с помощью Dockerfile

#node.js #docker #cordova

#node.js #docker #кордова

Вопрос:

Привет, я новичок здесь, поэтому прошу прощения, если я допустил какие-либо ошибки в своем сообщении.

В настоящее время я пытаюсь настроить среду Cordova. В настоящее время я могу создать образ, но он выдает мне эту ошибку: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: "npm": executable file not found in $PATH": unknown.

Это связано с тем, что Nodejs не устанавливается во время сборки (что странно, поскольку я вижу процесс установки в своей консоли.

Я удалил CMD ["npm", "--version"] из своего кода и перестроил изображение. Когда я врезался в контейнер, я подтвердил, что Nodejs действительно не установлен.

Я попытался удалить USER root , но это привело к сбою установки Android SDK.

Это мой текущий код в моем Dockerfile.

 FROM gradle:4.10.0-jdk8

USER root

ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" 
    ANDROID_HOME="/usr/local/android-sdk" 
    ANDROID_VERSION=29 
    ANDROID_BUILD_TOOLS_VERSION=27.0.3

# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android 
    amp;amp; cd "$ANDROID_HOME" 
    amp;amp; curl -o sdk.zip $SDK_URL 
    amp;amp; unzip sdk.zip 
    amp;amp; rm sdk.zip 
    amp;amp; mkdir "$ANDROID_HOME/licenses" || true 
    amp;amp; echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" > "$ANDROID_HOME/licenses/android-sdk-license"
#    amp;amp; yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses

# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" 
    "platforms;android-${ANDROID_VERSION}" 
    "platform-tools"

# Install Build Essentials
RUN apt-get update amp;amp; apt-get install build-essential -y amp;amp; apt-get install file -y amp;amp; apt-get install apt-utils -y


# Set working directory
WORKDIR /cordova

# Copy all files inside
COPY . .

# Install nodejs and cordova
RUN  curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash 
    amp;amp; . ~/.nvm/nvm.sh 
    amp;amp; nvm install node 
    amp;amp; npm install -g cordova

CMD ["npm", "--version"]
  

Спасибо за ваше время и помощь!

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

1. Менеджеры версий, например nvm , плохо взаимодействуют с Docker. В . nvm.sh этом случае установка не выполняется после завершения ее RUN инструкции. Я бы просто загрузил и установил конкретную версию Node, которая вам нужна, или использовал любую версию apt-get install nodejs , которую вам дает.

2. Привет, Дэвид, спасибо за ваш совет! Я попробовал apt-get install nodejs , и он установлен в образе docker. Однако я не смог запустить npm. Я искал в stackoverflow и не нашел ничего, что работает (в основном apt-get install npm , но я получаю сообщение об ошибке Unable to locate package npm ). Извините, если решение было найдено в stackoverflow, но я хотел бы задать некоторые вопросы по этому вопросу. Спасибо!

3. Привет всем, я успешно установил Nodejs, используя следующее: curl -sL https://deb.nodesource.com/sietup_14.x | bash - а затем apt-get install -y nodejs из этого сообщения askubuntu.com/questions/720784 /. … Спасибо!