Prozessanalyse der Bereitstellung von ASP.NET Core-Anwendungen auf dem Linux-System Docker

Prozessanalyse der Bereitstellung von ASP.NET Core-Anwendungen auf dem Linux-System Docker

1. Systemumgebung

1. Tencent Cloud Leichtgewicht-Anwendungsserver CentOS7.6

2. Betriebsablauf und dabei aufgetretene Probleme

1. SSH-Remote-Linux

ssh <Benutzername>@<IP-Adresse oder Domänenname>

Wenn Sie auf das folgende Problem stoßen:

Der Grund für dieses Problem: known_hosts ist eine Datei, die den öffentlichen Schlüssel des Remote-Hosts aufzeichnet. Das System wurde zuvor neu installiert, und der gespeicherte öffentliche Schlüssel ist immer noch der öffentliche Systemschlüssel des Systems, das nicht neu installiert wurde. Beim Herstellen einer Verbindung mit SSH wird zuerst der öffentliche Schlüssel überprüft. Wenn der öffentliche Schlüssel falsch ist, wird ein Fehler gemeldet. Lösung: Verwenden Sie den Befehl shh-keygen ssh-keygen -R IP . Nach der Ausführung wird die folgende Abbildung angezeigt:

Verwenden Sie dann SSH, um eine Remoteverbindung zu Linux herzustellen:


2. Aktualisieren Sie das System

sudo yum update

3. Installieren Sie Git

sudo yum -y installiere git

4. Installieren Sie Nginx, aktivieren und starten Sie den Dienst:

sudo yum installiere nginx
sudo systemctl aktiviere nginx
sudo systemctl starte nginx

5. Installieren Sie Dotnet SDK

Sie müssen dies nur einmal pro Computer tun.

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum installiere dotnet-sdk-5.0

6. Installieren Sie die Docker-Umgebung

1) Installieren Sie die Docker-Quelle:

Zuerst können wir den Deinstallationsbefehl ausführen. Wenn Sie es zuvor installiert haben oder es mit dem System geliefert wird, müssen Sie es sauber deinstallieren:

sudo yum entferne docker-ce

Dann können wir die angegebene Quelle installieren. Es gibt offizielle Versionen und Alibaba Cloud-Versionen. Ich werde hier versuchen, die Alibaba Cloud-Version zu verwenden. Ich habe gehört, dass es schneller sein soll.
Schritt 1: Installieren Sie einige notwendige Systemtools

sudo yum install -y yum-utils Gerätemapper-Persistent-Data lvm2

Schritt 2: Informationen zur Softwarequelle hinzufügen

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Schritt 3: Docker-CE aktualisieren und installieren

sudo yum makecache fast (optional)
sudo yum -y installiere docker-ce

Schritt 4: Starten Sie den Docker-Dienst

sudo service docker start

Docker-Start einrichten

systemctl aktiviert Docker

Starten Sie Docker

systemctl starte Docker

Version anzeigen

Docker --Version

Allgemeine Docker-Befehle

Alle Docker-Images anzeigen
Löschen eines Bilds mit der Bild-ID

Docker RMI [Bild-ID]

Alle Bilder löschen

sudo docker rmi $(docker images -q)

Den Ausführungsstatus aller Container anzeigen

Docker ps -a

Löschen eines Containers (Instanz) mit Container-ID

docker rm [Container-ID]

Alle Container löschen

docker rm $(sudo docker ps -a -q)

2) Testen Sie „Hello World“

Überprüfen Sie, ob Docker normal ausgeführt werden kann (führen Sie das „Hello-World“-Image aus. Wenn der lokale Computer nicht über das „Hello-World“-Image verfügt, ruft das System das „Hello-World“-Image automatisch ab.)

Docker Run Hallo Welt

Zu diesem Zeitpunkt können wir Folgendes überprüfen:
Welche Bilder sind aktuell auf dem Server verfügbar?

Docker-Bilder

Wie kann ich überprüfen, welche Container vorhanden sind?

Docker ps -a

Dies ist der Container mit dem Ausgabeinhalt, den wir gerade gesehen haben: Die Container-ID ist eb180038a3ce, das Bild ist „Hallo Welt“ und der Status ist „Beendet“.

7. Veröffentlichen Sie Ihr eigenes Bild

1) Docker-Unterstützung hinzufügen:

Passen Sie die Schnittstelle an, die vom Projekt bereitgestellt werden soll

Klicken Sie mit der rechten Maustaste auf die API-Ebene, um Docker-Unterstützung hinzuzufügen, und wählen Sie Linux

Ändern des Dockerfiles

VON: bedeutet, dass es sich um den Quellspiegel unseres Projekts handelt;
WORKDIR: Das Arbeitsverzeichnis des Bildes;
KOPIEREN: Dateien kopieren (Dateien im Verzeichnis, in dem sich Dockerfile befindet, in das Arbeitsverzeichnis im Image kopieren)
EXPOSE: Der Port, den der Container öffnen möchte (wir verwenden Port 8081 des Projekts)
ENTRYPOINT: Der Befehl, der nach dem Start des Containers ausgeführt werden soll (der Befehl dotnet Docker.Core.Api.dll wird hier ausgeführt)

2 Skriptdateien: Docker.Core.Publish.Linux.sh und Docker.Core.Publish.Docker.sh


Dockerfile: Dann Rechtsklick, immer Eigenschaften, immer ins Ausgabeverzeichnis (bin) kopieren Als nächstes das Projekt auf GitHub oder Gitee veröffentlichen: Ich veröffentliche es auf GitHub und gehe dann zu Gitee, um die Synchronisierung des Projekts zu erzwingen. Es ist schneller, das Projekt aus China zu klonen

2) Freigabe

Wir verwenden Git, um den Code auf den Server zu ziehen, und führen dann den Release-Befehl aus. Ich verwende eine Batchdatei, um ihn direkt mit einem Klick zu generieren (hauptsächlich, um fehlende Dateien zu vermeiden):

Führen Sie den Release-Befehl aus:

Sie können den generierten Veröffentlichungsordner PublishFiles sehen.
Der nächste Schritt besteht darin, das Docker-Image zu kompilieren.

3) Erstellen Sie ein Bild

Gehen Sie zu unserem Veröffentlichungsordner PublishFiles und testen Sie, ob diese Datei normal ist:

dotnet Docker.Core.Api.dll

Wenn alles in Ordnung ist, beginnen Sie mit dem Erstellen, immer noch im aktuellen Ordner (merken Sie sich diesen Punkt):

Docker-Build -t lenceas/apkimg.

Wobei lenceas/apkimg unser Spiegelname ist.
Da unser Dockerfile fünf Schritte hat, gibt es hier genau fünf Schritte.
Überprüfen Sie dann das Bild auf der Maschine:

Hier gibt es noch zwei weitere Bilder, eines ist unser Bild mit der ID 48252cd5c2d0, die Größe der Projektdatei beträgt 209 MB, und das andere ist das Quellbild unserer Docker-Datei.

4) Pushen Sie das Image in das Docker-Hub-Repository

Schritt 1: Registrieren Sie ein Konto auf dem Docker-Hub. Schritt 2: Erstellen Sie ein Repository.

Schritt 3: Server-Image-Push. Melden Sie sich zuerst bei Ihrem Konto an (wenn Sie sich zuvor angemeldet haben, können Sie sich abmelden und erneut anmelden).

Drücken:

Docker Push lenceas/apkimg:neueste

prüfen:
Wir melden uns beim Management-Backend an, um die Ergebnisse anzuzeigen

Sie können sehen, dass es erfolgreich gepusht wurde. Auf diese Weise können wir mein Bild überall verwenden.
Da wir nun ein Image haben, können wir einen Container erstellen, da Container nur ausgeführt werden können.

8. Generieren und Ausführen des Containers

1) Generieren Sie einen Container

Lassen Sie uns mit dem Bild einen Container generieren:

docker run -it -p 8081:8081 lenceas/apkimg

Sie sehen die Ausgabe. Wenn kein Fehler vorliegt, herzlichen Glückwunsch. Beenden Sie den aktuellen Prozess und prüfen Sie, welche Container vorhanden sind:

Zu diesem Zeitpunkt können Sie sehen, dass es einen zusätzlichen Container mit der ID e45b93658007 gibt und das Bild der Container lenceas/apkimg ist, aber unser Projektcontainer befindet sich im Beendigungszustand und muss geöffnet werden:

Docker starten e45b93658007

Der Status lautet „Wird bereits ausgeführt“. Wie kann man also testen, ob die Schnittstelle normal ist? Sie können den Befehl curl verwenden:

curl http://localhost:8081/WeatherForecast

Wenn Sie bis hierhin gelangt sind, herzlichen Glückwunsch, die Docker-Bereitstellung von NetCore ist im Grunde abgeschlossen. Der letzte Schritt ist der Nginx-Proxy. Da unser Docker diesen Prozess bereits geschützt hat, benötigen wir keine weiteren Daemon-Prozesse.

9. Nginx-Proxy-Dienst

Ändern Sie die Datei nginx.conf auf zwei Arten:
1. vim-Befehl zum Bearbeiten von Dateien: vim xxx
Einfügen, mit der Bearbeitung beginnen: i
Speichern und beenden: :wq!
2. Laden Sie es per FTP auf den lokalen Computer herunter und ändern Sie die Konfiguration. Ich werde die spezifische Konfiguration hier nicht aufschreiben, Sie können online danach suchen.

Der nächste Schritt besteht darin, den Nginx-Dienst neu zu starten. Zunächst können Sie Syntaxfehler erkennen:

nginx -t

nginx -s neu laden

Oben finden Sie Einzelheiten zur Linux-Docker-Bereitstellung von ASP.NET Core-Anwendungen. Weitere Informationen zur Docker-Bereitstellung von ASP.NET Core-Anwendungen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Veröffentlichen und Bereitstellen von Asp.Net Core in Linux+Jexus
  • Veröffentlichen und Bereitstellen von Asp.Net Core in MacOS+Linux+Nginx
  • Stellen Sie Asp.Net Core (.Net6) in Docker unter Linux CentOS bereit
  • So stellen Sie die .net Core-API unter Linux bereit
  • So stellen Sie .Net Core WebApi auf einem Linux-Server bereit
  • Der gesamte Prozess der Bereitstellung eines .net Core-Projekts mit Docker auf einem Linux-Server
  • Erste Erfahrungen mit der Bereitstellung von NetCore1.1+Linux
  • Detaillierte Schritte zum Bereitstellen einer .net-Core-Umgebung unter Linux
  • Detaillierte Erläuterung der Veröffentlichung und Bereitstellung von Asp.Net Core (MacOS + Linux + Nginx)
  • Eine vorläufige Studie zu ASP.NET Core (Veröffentlichen und Bereitstellen unter Linux)
  • Bereitstellen von ASP.NET Core-Programmen auf Linux-Systemen

<<:  So wählen Sie die Transaktionsisolationsebene in einem MySQL-Projekt

>>:  Webdesign-Erfahrung: Effizientes Schreiben von Webcode

Artikel empfehlen

Einführung in die CSS-Stilklassifizierung (Grundkenntnisse)

Klassifizierung von CSS-Stilen 1. Interner Stil -...

MySQL Master-Slave-Replikationsprinzip und zu beachtende Punkte

Vorne geschrieben Ich habe kürzlich ein spezielle...

Instanzmethode für MySQL-String-Verkettung und Festlegen von Nullwerten

#String-Verkettung concat(s1,s2); verkette die St...

Einführung in vierzehn Fälle von SQL-Datenbank

Datenblatt /* Navicat SQLite-Datenübertragung Que...

So bereinigen Sie schnell Milliarden von Daten in einer MySQL-Datenbank

Heute habe ich eine Festplattenalarm-Ausnahme erh...

MySQL zeigt ein einfaches Operationsbeispiel

Dieser Artikel beschreibt den MySQL-Show-Vorgang ...

Detaillierte Analyse des Blockierungsproblems von js und css

Inhaltsverzeichnis DOMContentLoaded und laden Was...

Einige Tipps zur Verwendung von Less in Vue-Projekten

Inhaltsverzeichnis Vorwort 1. Stildurchdringung 1...

Probleme bei der Ausführungsreihenfolge von AND und OR in SQL-Anweisungen

Frage Beim Schreiben von Datenbank-SQL ist mir ge...