Экземпляр контейнера Azure DevOps NPM не найден

У меня есть экземпляр контейнера Azure, который я использую в качестве агента Azure Devops. Я попытался добавить npm в файл докеров агента. Если я подключаюсь к экземпляру контейнера с портала Azure и запускаю npm install -g sass, он работает нормально.

root@SandboxHost-638173989121880372:/azp# npm install -g sass

changed 17 packages in 926ms

2 packages are looking for funding
  run `npm fund` for details

Мой конвейер имеет следующую задачу:

- task: Bash@3
    displayName: 'npm install sass'
    inputs:
      targetType: 'inline'
      script: 'npm install -g sass'

который терпит неудачу со следующим:

Starting: npm install sass
==============================================================================
Task         : Bash
Description  : Run a Bash script on macOS, Linux, or Windows
Version      : 3.214.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/bash
==============================================================================
Generating script.
Script contents:
npm install -g sass
========================== Starting Command Output ===========================
/usr/bin/bash /azp/_work/_temp/fcfde5dd-1d1f-40c7-ba8f-9b6b3e0fb87f.sh
/azp/_work/_temp/fcfde5dd-1d1f-40c7-ba8f-9b6b3e0fb87f.sh: line 1: npm: command not found
##[error]Bash exited with code '127'.
Finishing: npm install sass

Я предполагаю, что агент должен работать в каком-то другом контексте, который не может найти npm, но ищет идеи о том, как это решить.

Докерфайл

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive

#### - Basic Packages - ####
RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y -qq --no-install-recommends \
    apt-transport-https \
    apt-utils \
    ca-certificates \
    curl \
    git \
    gnupg \
    iputils-ping \
    jq \
    lsb-release \
    software-properties-common \
    zip \
    wget && rm -rf /var/lib/apt/lists/*

#### - Azure CLI and Kubectl for Azure AKS - ####
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash && \
  az aks install-cli

#### - PowerShell - ####
# Download the Microsoft repository GPG keys
# Register the Microsoft repository GPG keys
# Delete the the Microsoft repository GPG keys file
# Update the list of packages after we added packages.microsoft.com
# Install PowerShell
RUN wget -q "https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb" && \
    dpkg -i packages-microsoft-prod.deb && \
    rm packages-microsoft-prod.deb && \
    apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y powershell && rm -rf /var/lib/apt/lists/*

#### - Terraform CLI - ####
RUN wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | tee /usr/share/keyrings/hashicorp-archive-keyring.gpg && \
    gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint && \
    echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list && \
    apt update && \
    apt install -y terraform && rm -rf /var/lib/apt/lists/*

#### - Docker CLI - ####
RUN mkdir -m 0755 -p /etc/apt/keyrings && \
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \
    echo \
    "deb [arch = "$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
    tee /etc/apt/sources.list.d/docker.list > /dev/null && \
    apt update && \
    apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin && rm -rf /var/lib/apt/lists/*

#### - Npm and Node.js via NVM - ####
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash && \
    export NVM_DIR = "$HOME/.nvm" && \
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
    [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" && \
    nvm install node

# Can be 'linux-x64', 'linux-arm64', 'linux-arm', 'rhel.6-x64'.
ENV TARGETARCH=linux-x64

WORKDIR /azp

COPY ./start.sh .
RUN chmod +x start.sh

ENTRYPOINT [ "./start.sh" ]

*** Редактировать - переключился с использования NVM на прямую установку NPM/Node, и это сработало.

#### - Node and NPM - ####
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
    apt-get install -y nodejs && rm -rf /var/lib/apt/lists/*

Я подозреваю, что это было связано с использованием NVM, поэтому я переключился на установку NPM/Node напрямую, и теперь это работает.

MadSkeletor 20.04.2023 19:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Переключился с использования NVM на прямую установку NPM/Node, и это сработало.

#### - Node and NPM - ####
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
    apt-get install -y nodejs && rm -rf /var/lib/apt/lists/*

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