So stellen Sie das Crownblog-Projekt mit Docker in der Alibaba Cloud bereit

So stellen Sie das Crownblog-Projekt mit Docker in der Alibaba Cloud bereit

Front-End-Projektpaketierung

  • Suchen Sie .env.production und ändern Sie es in Ihre eigene IP- oder Domänenadresse.
  • Führen Sie den Befehl npm run build aus, um die Dist-Datei zu generieren
  • Kopieren Sie die Dist-Datei in das Backend-Projektverzeichnis (verwenden Sie den integrierten HTTP-Dienst von Go, um das Frontend-Projekt bereitzustellen).

Bereitstellung von Backend-Projekten

1. Serverkonfiguration

  • Kaufen Sie einen Alibaba Cloud Server
  • Öffnen Sie die Server-Ports 8085 und 3306
  • Melden Sie sich mit Xshell beim Server an

2. Docker installieren

Offizielle Dokumentation: docs.docker.com/get-docker/

Wählen Sie das entsprechende System zur Anzeige aus, am Beispiel von Ubuntu 18.04 LTS

Deinstallieren Sie alte Versionen

sudo apt-get entfernen docker docker-engine docker.io containerd runc

Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum erstellen    
Statusinformationen werden gelesen... Fertig
Das Paket „Docker-Engine“ ist nicht installiert und wird daher nicht entfernt.
Das Paket „Docker“ ist nicht installiert und wird daher nicht entfernt.
Paket „containerd“ ist nicht installiert und daher nicht entfernt
Das Paket „docker.io“ ist nicht installiert und wird daher nicht entfernt.
Paket „runc“ ist nicht installiert und daher nicht entfernt
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 3 nicht aktualisiert.

Hinzufügen eines neuen Versionsrepositorys

sudo apt-get update

udo apt-get install \
  apt-transport-https \
  CA-Zertifikate \
  Locke \
  gnupg-agent \
  Software-Eigenschaften-allgemein

Holen Sie sich den offiziellen GPG-Schlüssel

# curl -fsSL https://download.docker.com/linux/ubuntu/gpg |

Überprüfen Sie den Schlüssel. Wenn die Ausgabe wie folgt lautet, ist sie korrekt.

# Apt-Key-Fingerabdruck 0EBFCD88

pub rsa4096 2017-02-22 [SCEA]
   9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [unbekannt] Docker-Release (CE deb) <[email protected]>
sub rsa4096 22.02.2017 [S]

Lageradresse hinzufügen (Download aus inländischem Lager, schneller)

$ sudo add-apt-repository \
  "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
  $(lsb_release -cs) \
  stabil"

Repository aktualisieren und installieren

 $ sudo apt-get update

 $ sudo apt-get installiere docker-ce docker-ce-cli containerd.io

Führen Sie zur Überprüfung „hello-world“ aus.

$ Docker Pull Hallo Welt
$ Docker-Ausführung Hallo-Welt
#Die folgenden Informationen werden angezeigt und zeigen an, dass Docker erfolgreich installiert wurde und normal ausgeführt werden kann. Grüße von Docker!
Diese Meldung zeigt, dass Ihre Installation scheinbar ordnungsgemäß funktioniert.
Um diese Nachricht zu generieren, hat Docker die folgenden Schritte ausgeführt:

  1. Der Docker-Client hat den Docker-Daemon kontaktiert.
  2. Der Docker-Daemon hat das „Hallo-Welt“-Image vom Docker-Hub abgerufen. (amd64)
  3. Der Docker-Daemon erstellt aus diesem Image einen neuen Container, der die ausführbare Datei ausführt, die die Ausgabe erzeugt, die Sie gerade lesen.
  4. Der Docker-Daemon hat die Ausgabe an den Docker-Client gestreamt, der sie an Ihr Terminal gesendet hat.
 Wenn Sie etwas Anspruchsvolleres ausprobieren möchten, können Sie einen Ubuntu-Container mit Folgendem ausführen:
 $ Docker ausführen -it Ubuntu Bash
 Geben Sie Bilder frei, automatisieren Sie Workflows und mehr mit einer kostenlosen Docker-ID:
 https://hub.docker.com/
 Weitere Beispiele und Ideen finden Sie unter:
 https://docs.docker.com/get-started/

Verwenden Sie die Alibaba Mirror Station, um zu beschleunigen

Adresse: mirrors.aliyun.com/

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "Registrierungsspiegel": ["https://XXXyourid.mirror.aliyuncs.com"]
}
Ende der Laufzeit
sudo systemctl daemon-reload
sudo systemctl Neustart Docker

3. Abrufen von Bildern und Erstellen von Bildern und Container-Orchestrierung

MySQL-Serverspiegel

Zunächst einmal rate ich dringend davon ab, MySQL mit Docker bereitzustellen, und zwar aus mehreren Gründen:

  • Datenvolumes müssen gemappt werden. Führen Sie Datenbankdaten niemals in einem Docker-Container aus. Andernfalls werden alle Daten gelöscht, sobald der Container gelöscht wird. Daher ist Datenpersistenz ein Muss! ! ;
  • Dies ist für die E/A nicht förderlich. Daten werden einmal im Container und einmal im gebundenen Datenträger gelesen und geschrieben, was den Lese- und Schreibdruck verdoppelt und die Leistung verringert.

Wenn Sie MySQL auf Docker bereitstellen müssen, können Sie dies tun

#Stellen Sie zunächst sicher, dass MySQL durchsucht werden kann. Sie können diesen Schritt überspringen oder auf dockerhub.com nach „docker search mysql“ suchen.

#Pullen Sie das Image docker pull mysql #Standardmäßig wird hier die neueste Version gezogen. Wenn Sie eine bestimmte Version benötigen, können Sie nach dem Image ein Tag hinzufügen. Die spezifischen Versionsinformationen finden Sie unter dockerhub.com #Pullen Sie eine bestimmte Version, z. B. 8.0.22 (die Versionsnummer muss die offizielle Versionsnummer sein, sonst kann sie nicht gefunden werden)
docker pull mysql:8.0.22

#Zu diesem Zeitpunkt können Sie die gespiegelten Docker-Bilder anzeigen

#Führen Sie das Image aus docker run -d -p 3306:3306 -v /crownBlog/datadir:/var/lib/mysql --name crownBlog-mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

# -d bedeutet, dass es im Hintergrund ausgeführt wird und die Container-ID zurückgibt
# -p 3006:3306 gibt die Portzuordnung an, genauer gesagt -p Host-Port: Container-Port# --name gibt dem Container einen Namen# -e MYSQL_ROOT_PASSWORD=password legt das Passwort für den MySQL-Root-Administrator fest# -v /crownBlog/datadir:/var/lib/mysql fügt ein Datenvolume hinzu/crownBlog/datadir ist der Datenbankpfad des Hosts/var/lib/mysql ist der Datenbankpfad im Container, dieser Schritt ist sehr wichtig#Geben Sie die Containerkonfiguration eindocker exec -it crownBlog-mysql bash

root@ed9345077e02:/#mysql -u root -p
Passwort eingeben:
Willkommen beim MySQL-Monitor. Befehle enden mit ; ​​oder \g.
Ihre MySQL-Verbindungs-ID ist 8
Serverversion: 8.0.22 MySQL Community Server – GPL
Copyright (c) 2000, 2020, Oracle und/oder seine Tochtergesellschaften. Alle Rechte vorbehalten.
Oracle ist eine eingetragene Marke der Oracle Corporation und/oder ihrer Tochtergesellschaften.
Andere Namen können Marken ihrer jeweiligen Eigentümer sein.

Geben Sie „help;“ oder „\h“ ein, um Hilfe zu erhalten. Geben Sie „\c“ ein, um die aktuelle Eingabeanweisung zu löschen.

MySQL>

# Danach ist der Vorgang derselbe wie bei normalem MySQL.

4. Erstellen Sie eine Datenbank und importieren Sie Datendateien

  • Herstellen einer Verbindung zu einem Server über XFTP
  • Laden Sie die lokale SQL-Datei auf den Server hoch
  • Verwenden Sie den Befehl „Docker CP“, um die SQL-Datei in den Container zu kopieren
docker cp crownBlog.sql crownBlog-mysql:/home 
(Der erste Parameter von Docker CP gibt die lokale Datei oder den lokalen Ordner an und der zweite Parameter gibt den Container und den Zielordner im Container an.)

Melden Sie sich beim Container an und melden Sie sich bei MySQL an: docker exec -it crownBlog-mysql mysql -uroot -p123456

Führen Sie die SQL-Datei aus: source /home/crownBlog.sql

5. Erstellen Sie einen Crownblog-Projektspiegel

Verwenden Sie Xftp, um den Backend-Code auf den Server hochzuladen, und geben Sie den Code ein, um die Dockerfile-Datei zu schreiben

VON golang:latest
RUN go env -w GO111MODULE=on
RUN go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct

ARBEITSVERZEICHNIS $GOPATH/src/crownBlog
KOPIEREN . $GOPATH/src/crownBlog

FÜHREN Sie „go build“ aus.

EXPOSE 8085

EINSTIEGSPUNKT ["./blog"]   

Konfigurieren Sie die Konfigurationsdatei von Crownblog
Mod geändert zur Veröffentlichung

srv wird in die Server-IP geändert und der Datenbank-Host wird in die gerade zugeordnete Datenbank-IP geändert

6. Bild generieren

Im Dockerfile-Verzeichnis

$ docker build -t crownblog.
$ docker run -d -p 8085:8085 --name crownblog crownblog

 
#Sie können auf die Website zugreifen, indem Sie auf die Server-IP:8085 zugreifen.

Dies ist das Ende dieses Artikels über die Schritte zum Bereitstellen des Crownblog-Projekts in Alibaba Cloud mithilfe von Docker. Weitere Informationen zum Bereitstellen von Crownblog in Alibaba Cloud mithilfe von Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Erstellen, Hochladen, Abrufen und Bereitstellen von Docker-Images (mithilfe von Alibaba Cloud)
  • Alibaba Cloud ESC Server Docker-Bereitstellung von Single Node Mysql
  • Alibaba Cloud Linux CentOS 7 Docker-Bereitstellung verwendet Gogs, um Ihren eigenen Git-Server zu erstellen

<<:  Über gutes Design

>>:  Beispielcode zur Implementierung einer Sternenhimmelanimation mit CSS3 Advanced LESS

Artikel empfehlen

Analyse von Beispielen für MySQL-Benutzerverwaltungsvorgänge

Dieser Artikel beschreibt die MySQL-Benutzerverwa...

Detaillierte Erklärung der MySQL-Binlog-Verwendung

binlog ist eine binäre Protokolldatei, die alle D...

Implementierung eines Random Roll Callers basierend auf JavaScript

In diesem Artikel wird der spezifische JavaScript...

Beispiel für die Verwendung des href-Attributs und des onclick-Ereignisses eines Tags

Das „a“-Tag wird hauptsächlich verwendet, um Seit...

So installieren Sie Linux Flash

So installieren Sie Flash unter Linux 1. Besuchen...

Analyse der Vor- und Nachteile von gespeicherten MySQL-Prozeduren

MySQL Version 5.0 begann, gespeicherte Prozeduren...

Analyse mehrerer Gründe, warum Iframe weniger verwendet werden sollte

Die folgende Grafik zeigt, wie zeitaufwändig es is...

js realisiert das dynamische Laden von Daten durch Wasserfallfluss

In diesem Artikel erfahren Sie den spezifischen C...

Detaillierte Schritte zur Installation eines Hadoop-Clusters unter Linux

Inhaltsverzeichnis 1. Erstellen Sie ein Hadoop-Ve...

Detaillierter Prozess der FastAPI-Bereitstellung auf Docker

Docker-Lernen https://www.cnblogs.com/poloyy/p/15...

Ein kleines Problem mit Nullwerten in MySQL

Heute habe ich beim Testen des Nullwertes ein kle...