Команда Yarn не найдена после успешной сборки докера

Привет, я использую amazonlinux:2 в качестве образа докера и пытаюсь установить nodev14 из nvm. Я не нашел альтернатив, которые я пытаюсь установить yarn. Вот мой Dockerfile

FROM amazonlinux:2

RUN yum update -y && \
    yum install tar curl gzip -y && \
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash && \
    . ~/.nvm/nvm.sh && \
    nvm install 14 -y &&  \
    npm install yarn -g && \
    yum install aws-cli -y && \
    yum clean all

Когда я собираю, сборка успешна, но когда я запускаю docker run -it container /bin/bash и после того, как вхожу /bin/bash, он говорит, что команда не найдена. Вот полный журнал этого процесса

niteshrijal@Niteshs-MBP creepler % docker build -t node-14-tst .
[+] Building 50.9s (7/7) FINISHED                                                                           docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                                        0.0s
 => => transferring dockerfile: 377B                                                                                        0.0s
 => [internal] load .dockerignore                                                                                           0.0s
 => => transferring context: 2B                                                                                             0.0s
 => [internal] load metadata for docker.io/library/amazonlinux:2                                                            2.5s
 => [auth] library/amazonlinux:pull token for registry-1.docker.io                                                          0.0s
 => CACHED [1/2] FROM docker.io/library/amazonlinux:2@sha256:7c24b50b9f0ad83b7219edb704962f361bcf3ec85fdfd302121159bf0d0a6  0.0s
 => [2/2] RUN yum update -y &&     yum install tar curl gzip -y &&     curl -o- https://raw.githubusercontent.com/nvm-sh/  47.5s
 => exporting to image                                                                                                      0.8s
 => => exporting layers                                                                                                     0.8s
 => => writing image sha256:bd8ae162aadb85eb1e08ac987f4cf136a7e604d7eac16231205d20ccab134e9a                                0.0s 
 => => naming to docker.io/library/node-14-tst                                                                              0.0s 

What's Next?
  View summary of image vulnerabilities and recommendations → docker scout quickview
niteshrijal@Niteshs-MBP creepler % docker run -it node-14-tst /bin/bash

bash-4.2# yarn
bash: yarn: command not found

Есть ли Как установить nvm в докер?ответить на ваш вопрос? Также учтите, что образ Docker обычно содержит одно упакованное приложение и его зависимости, а это значит, что ему никогда не понадобится более одной версии Node; можете ли вы напрямую установить нужную вам версию Node без nvm или просто собрать свой образ FROM node:14?

David Maze 11.10.2023 01:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваша среда NVM не активируется. Когда вы устанавливаете NVM, он пытается добавить некоторые данные в вашу среду/PATH в правильном профиле. Если ему не удастся найти правильный файл профиля, он не сможет этого сделать. Он также не может знать, будете ли вы подключаться к своему контейнеру через bash, sh, zsh или, возможно, какую-либо другую оболочку, и поэтому он действительно не может знать, в какой файл добавлять ваши переменные. Вот почему в файле readme NVM указано, что он пытается добавить переменные в правильный профиль.

Попробуйте создать файл .bashrc в домашнем каталоге вашего контейнера со следующим содержимым, как указано в файле сведений NVM:

export NVM_DIR = "$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

Вы можете сделать это, создав файл .bashrc в той же папке, что и ваш Dockerfile, а затем просто скопировав его:

COPY .bashrc /root/.bashrc

это отвечает на мой вопрос, но пряжа не установлена ​​в /bin/sh, у меня там проблема

Neetesshhr 13.10.2023 14:06

Я бы, вероятно, просто предложил не использовать NVM внутри Docker, поскольку это в основном инструмент разработки. Вместо этого используйте базовый образ Node, как предложил @DavidMaze. Это будет гораздо более гладкий опыт.

Leonardo G 14.10.2023 15:39

Если вам абсолютно необходим Amazon Linux, вы можете загрузить и запустить сценарий по адресу rpm.nodesource.com/setup_14.x (например, через CURL), а затем запустить yum install nodejs -y, который установит Node 14 в ваш образ Amazon Linux. напрямую, не требуя загрузки каких-либо переменных профиля.

Leonardo G 14.10.2023 15:49

Другие вопросы по теме