wake-up-neo.net

Konfigurieren der Dockerfile für einen ASP.NET Core 2.1 Angular Projekt

Ich bin ein absoluter Neuling in Docker und versuche derzeit, ein ASP.NET Core 2.1 mit dem Projekt Angular zu erstellen. Ich verwende einen Linux-Container unter Docker für Windows und meine IDE ist die VS2017-Community-Edition.

Momentan erhalte ich diesen Fehler:

[1] Stellen Sie sicher, dass 'npm' installiert ist und sich in einem der PATH-Verzeichnisse befindet. Die aktuelle Umgebungsvariable PATH ist: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin Stellen Sie sicher, dass sich die ausführbare Datei in einem dieser Verzeichnisse befindet, oder aktualisieren Sie Ihren PFAD.

Ich glaube, ich muss Node.js in meiner Docker-Instanz oder wie auch immer Sie es nennen, installieren. Es sollte über Dockerfile erfolgen. Bitte weisen Sie auf meine Fehler in meiner Annahme hin. Und wie kann sichergestellt werden, dass die Abhängigkeiten unabhängig von der Art des verwendeten Containers installiert werden? Ich erwarte, dass meine zukünftigen Projekte auf verschiedenen Plattformen installiert werden.

4
eSPiYa

Im Microsoft/dotnet: 2.1-Aspnetcore-Laufzeit-Container-Image npm/nodejs ist nicht installiert. Um dies im Container zu installieren, aktualisieren Sie die Docker-Datei

FROM Microsoft/dotnet:2.1-aspnetcore-runtime AS base

# Setup NodeJs
RUN apt-get update && \
    apt-get install -y wget && \
    apt-get install -y gnupg2 && \
    wget -qO- https://deb.nodesource.com/setup_6.x | bash - && \
    apt-get install -y build-essential nodejs
# End setup

WORKDIR /app
EXPOSE 80

Nur Angular CLI Live Reload funktioniert nicht.

7
Marcel
1
San Jaisy

Wegen des Publizierens geschieht das auf einem Microsoft/dotnet: 2.1-sdk-Image. Dieses Basisimage enthält also nur dotnet sdk, aber nicht npm hat dieses Basisimage installiert ... Es gibt zwei Schritte, um dieses Problem zu lösen:

1) Hinzufügen eines Installationsknotens zu einem vorhandenen Dotnet: 2.1-sdk, wie von @Marcel in Antwort geschrieben.

oder 

2) Sie können Dockerfile einen zusätzlichen Schritt hinzufügen, um die Frontendseite basierend auf NODE image zu erstellen und Ihr Angular zu erstellen. Nach dem erfolgreichen Build werden Sie generierte Frontend-Dateien erhalten und in der letzten Phase in das Laufzeit-Image kopieren. Sie fügen also mit dieser Option keine Installation zu dotnet sdk hinzu. Mit einer Docker-Datei mit mehreren Schritten werden Sie die Backend-Seite separat und die Frontend-Site separat erstellen.

Wenn Sie es als zweite Option nutzen möchten, folgen Sie dem Link unten, um das Frontend auf Dockerfile separat mit ASP.NET Core in derselben Docker-Datei zu erstellen:

Dockerize-Anwendung für ASP.NET Core Angular (Fehler beheben: Der Befehl "npm install" wurde mit Code 127 beendet.)

0
Alakbar