Dockerfile / npm: Erstellen Sie einen sudo-Benutzer, um npm install auszuführen
Ein ... ErstellenDockerfile
um ein Knoten-Framework zu installieren, das wir erstellt haben (gemäß meinem vorherigen Beitrag)Hier):
# Install dependencies and nodejs
RUN apt-get update
RUN apt-get install -y python-software-properties python g++ make
RUN add-apt-repository ppa:chris-lea/node.js
RUN apt-get update
RUN apt-get install -y nodejs
# Install git
RUN apt-get install -y git
# Bundle app source
ADD . /src
# Create a nonroot user, and switch to it
RUN /usr/sbin/useradd --create-home --home-dir /usr/local/nonroot --shell /bin/bash nonroot
RUN /usr/sbin/adduser nonroot sudo
RUN chown -R nonroot /usr/local/
RUN chown -R nonroot /usr/lib/
RUN chown -R nonroot /usr/bin/
RUN chown -R nonroot /src
USER nonroot
# Install app source
RUN cd /src; npm install
Das Problem ist, dass npm erwartet, nicht als root ausgeführt zu werden - gibt es eine Möglichkeit, eine Reihe von zu verkettensudo useradd
Befehle zum Erstellen eines temporären Benutzers mit Sudo-Berechtigungen, zu dem ich dann wechseln kannUSER
laufen dienpm install
?
BEARBEITEN: Aktualisiert das Obige und erhält nun dieses Problem, nachdem ein Benutzer erfolgreich erstellt wurde und das Problem behoben wurdenpm install
Linie und Würgen:
Error: Attempt to unlock [email protected], which hasn't been locked
at unlock (/usr/lib/node_modules/npm/lib/cache.js:1304:11)
at cb (/usr/lib/node_modules/npm/lib/cache.js:646:5)
at /usr/lib/node_modules/npm/lib/cache.js:655:20
at /usr/lib/node_modules/npm/lib/cache.js:1282:20
at afterMkdir (/usr/lib/node_modules/npm/lib/cache.js:1013:14)
at /usr/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53
at Object.oncomplete (fs.js:107:15)
If you need help, you may report this *entire* log,
including the npm and node versions, at:
<http://github.com/npm/npm/issues>