Извините, я не знаком с NPM и docker контейнером, надеюсь, этот вопрос поможет.
Я использую нод: 12.7-alpine образ для сборки Мой проект Angular, и я сталкиваюсь с дилеммой:
Я не могу запустить npm install
в контейнере, потому что он каким-то образом обращается к каталогу /. npm. Так как нам нужно повысить привилегию, чтобы получить доступ, я запускаю sudo npm install
.
Оказывается, что Alphine не поставляется с модулем sudo
.
Тогда я обнаружил, что все на inte rnet рекомендует не запускать установку npm с sudo . Но решение не использовать sudo состоит в том, чтобы использовать sudo для смены владельца /.npm.
А у Alpine просто нет собственного sudo ...
На самом деле я использую CI / CD с использованием Jenkins, node: 12.7-alpine - это очень популярное официальное изображение, мне интересно, есть ли какое-то решение или хорошая практика, которая мне не нужна настроить мое собственное docker изображение только для стадии сборки?
Пожалуйста, поделитесь своим решением! Оценил!
Обновление, Jenkinsfile
pipeline {
agent any
stages {
stage('Build Java') {
agent {
docker {
image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
}
}
steps {
sh 'mvn -B -DskipTests clean package'
}
}
stage('Build Web') {
agent {
docker {
image 'node:12.7-alpine'
}
}
steps {
sh 'cd gobang-web && npm install && npm run build'
}
}
stage('Build image') {
steps {
sh 'docker build . -t gobang:1.0'
}
}
}
}