#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 /. … Спасибо!