Der Grund ist dieser Ich wollte eine Mocker-Plattform einsetzen und habe mich daher auf Empfehlung eines Freundes für das fertige Projekt API-Mocker entschieden. Das Projekt ist in Serverknoten, Client Vue und Datenbank MongoDB unterteilt Als ich versuchte, direkt bereitzustellen, stellte ich fest, dass ich viele Umgebungen installieren musste, z. B. Node, Mongo und Nginx. Das war sehr mühsam. Ich hatte zuvor Docker verwendet und fragte mich daher, ob ich Docker verwenden könnte, um direkt ohne die Umgebung bereitzustellen? Es gab also diesen Versuch Multi-Container-Kommunikation Das Projekt ist in 3 Teile unterteilt, daher müssen 3 Container (Node, Mongo, Nginx) eingerichtet werden Wie kommunizieren Container miteinander? # Stellen Sie eine Verbindung über den Link-Befehl her$ docker run --name <Name> -d -p <Pfad1>:<Pfad2> --link <Containername>:<Alias> <Containername:Tag/Image-ID>
Als nächstes versuchen wir, Implementierungsprozess 1. Erstellen Sie einen Mongo-Container 2. Erstellen Sie den Knotencontainer und stellen Sie eine Verbindung mit dem Mongo-Container her 3. Erstellen Sie den Nginx-Container und stellen Sie eine Verbindung mit dem Node-Container her Erstellen Sie den Mongo-Container Lassen Sie uns zuerst das Mongo-Bild abrufen $ docker pull mongo:neueste Lassen Sie uns nun dieses Image ausführen. $ Docker-Bilder REPOSITORY TAG BILD ID ERSTELLT GRÖSSE mongo latest 05b3651ee24e vor 2 Wochen 382 MB Die Direktive --auth aktiviert die Identitätsüberprüfung der Mongo-Verbindung. Die Überprüfung ist aktiviert, weil die Identitätsüberprüfung nicht festgelegt ist, wenn der Knoten über Container hinweg verbunden ist. Der Server kann keine Verbindung zur Mongo-Datenbank herstellen.
Container anzeigen $ Docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 0d440be90935 mongo "docker-entrypoint.s..." vor 14 Stunden Aktiv 14 Stunden 0.0.0.0:27017->27017/tcp mock-mongo Da wir die Authentifizierung für Mongo aktiviert haben, müssen wir den Mongo-Container aufrufen und das Konto konfigurieren, das verwendet wird, wenn der Knoten eine Verbindung herstellt $ docker exec -it mock-mongo /bin/bash $ Mongo-Administrator # Erstellen Sie einen Manager-Benutzer $ db.createUser({Benutzer:"admin", pwd:"admin", Rollen:[{Rolle:"admin", db:"admin"}]}) # Kontoautorisierung $ db.auth('admin','admin') Nachdem unsere Mongo-Datenbank nun läuft, erstellen wir einen Knotencontainer. Erstellen Sie den Knotencontainer und stellen Sie eine Verbindung mit dem Mongo-Container her Bevor wir mit dem Erstellen des Knotencontainers beginnen, müssen wir uns zunächst auf den Mongo-Container-Alias, die Portnummer und das Kennwort für das Anmeldekonto einigen
Ändern wir zunächst die Konfiguration des Knotenservers Dateikonfiguration dockerfile/api-mocker/server/config/config.default.js Ändern Sie die Mongo-Verbindungskonfiguration, db ist der Alias des voreingestellten Mock-Mongo-Containers Mungo: { URL: „mongodb://admin:admin@db:27017/api-mock?authSource=admin“ }, Jetzt schreiben wir ein Dockerfile um das Image zu erstellen # Geben Sie das Basis-Image FROM node:latest an # Betreuer BEtreuer [email protected] # Arbeitsverzeichnis WORKDIR /www #Kopieren Sie die lokale Datei in den Container, ohne sie zu dekomprimieren COPY api-mocker node-server/api-mocker EXPOSE 7001 ARBEITSVERZEICHNIS /www/node-server/api-mocker/server Führen Sie npm install aus ARBEITSVERZEICHNIS /www/node-server/api-mocker # Wird nach dem Erstellen des Containers aufgerufen und aufgerufen, wenn der Container gestartet wird CMD ["make", "prod_server"] Wir verwenden die geschriebene Dockerfile-Datei, um das Image zu erstellen $ docker build -t="mock-server:1.0.0" . Schauen wir uns das Bild an $ Docker-Bilder REPOSITORY TAG BILD ID ERSTELLT GRÖSSE Mock-Server 1.0.0 957ad2aa1f97 vor 8 Minuten 674 MB mongo latest 05b3651ee24e vor 2 Wochen 382 MB Jetzt kommt der kritische Schritt. Wir werden das Mocker-Server-Image ausführen und eine Verbindung zwischen dem Server und der Datenbank herstellen. Kopieren Sie den Code wie folgt: $ docker run -d -i -t -p 7001:7001 --name mock-server1 --link mock-mongo:db mock-server:1.0.0 /bin/bash Werfen wir einen Blick auf den Container, der gerade läuft $ Docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN ee780b903c64 mock-server:1.0.0 "/bin/bash" Vor etwa einer Minute 11 Sekunden aktiv 0.0.0.0:7001->7001/tcp mock-server 0d440be90935 mongo "docker-entrypoint.s..." vor 16 Stunden Vor 16 Stunden 0.0.0.0:27017->27017/tcp mock-mongo Überprüfen Sie den Verbindungsstatus zwischen dem Knotencontainer und dem Mongo-Container $ docker exec -it mock-server /bin/bash $ curl-Datenbank Nachdem unser Server und unsere Datenbank nun eine Verbindung hergestellt haben, beginnen wir mit der Bereitstellung unseres Clients. Erstellen Sie den Nginx-Container und stellen Sie eine Verbindung mit dem Node-Container her. Bevor wir nginx einrichten, müssen wir uns zunächst auf den Knotencontainer-Alias, die von nginx weitergeleitete Portnummer sowie den Domänennamen und die Portnummer für den Clientzugriff auf nginx einigen.
Lassen Sie uns zunächst das Nginx-Image abrufen und einen Container erstellen $ docker pull nginx:latest $ docker run -p 90:80 --link mock-node:node nginx:latest --name mock-nginx # Überprüfen Sie den Verbindungsstatus des Containers $ docker exec -it mock-nginx /bin/bash $Umgebung # Wenn Sie die folgenden Daten sehen, bedeutet dies, dass die Verbindung erfolgreich ist NODE_PORT_7001_TCP=tcp://172.17.0.3:7001 NODE_PORT_7001_TCP_PORT=7001 NODE_ENV_YARN_VERSION=1.9.4 Schauen wir uns nun die laufenden Container an $ Docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 09644025d148 nginx „nginx -g ‚Daemon von …‘“ vor 5 Stunden Vor 5 Stunden aktiv 0.0.0.0:90->80/tcp mock-nginx ee780b903c64 mock-server:1.0.0 "/bin/bash" Vor etwa einer Minute 11 Sekunden aktiv 0.0.0.0:7001->7001/tcp mock-server 0d440be90935 mongo "docker-entrypoint.s..." vor 24 Stunden Aktiv 24 Stunden 0.0.0.0:27017->27017/tcp mock-mongo Aufgrund der unabhängigen Bereitstellung des Frontends müssen wir die Konfiguration von nginx ändern. Es gibt mehrere Möglichkeiten, die Konfiguration von nginx zu ändern:
Unsere aktuelle Betriebsumgebung ist ein 17-Zoll-MacBook Pro mit 15 Zoll, das eine spezielle Konfiguration für die Montage erfordert. Daher habe ich die zweite Methode verwendet. Änderung der Konfigurationsdatei
$ docker cp mock-nginx:/etc/nginx/conf.d/default.conf ~/nginx/default.conf Fügen Sie der nginx-Konfigurationsdatei die folgende Konfiguration hinzu Server { Standort /mock-api/ { # Knoten ist der Alias des Befehlsserver-Containers Proxy_Pass http://node:7001/; } Standort /mock { Autoindex aktiviert; Alias /root/dist; } } Überschreibe die Konfiguration im Container und starte nginx neu $ docker cp ~/nginx/default.conf mock-nginx:/etc/nginx/conf.d/default.conf # Geben Sie den Container ein$ docker exec -it mock-nginx /bin/bash # Starten Sie nginx neu. Wenn Sie die folgende Eingabeaufforderung sehen, bedeutet dies, dass der Neustart erfolgreich war. $ nginx -s reload 2018/11/03 17:23:14 [Hinweis] 68#68: Signalprozess gestartet Jetzt kommt unser letzter spannender Schritt Ändern Sie den von unserem Front-End-Projekt und Paket angeforderten Netzwerkdomänennamen und laden Sie ihn hoch //API-Mocker/Client/Konfiguration // module.exports > build > serverRoot modul.exporte = { bauen: { ServerRoot: „127.0.0.1:90/mock-api“ } } Laden Sie die gepackte Dist-Datei in das Verzeichnis /root/dist der Nginx-Konfiguration hoch. $ docker cp ~/Sites/api-mocker/client/dist mock-nginx:/root > Natürlich kann die Konstruktion eines Nginx-Containers auch durch Schreiben einer Dockfile-Datei implementiert werden. Wir werden es hier nicht im Detail erklären. Mounten Sie die Konfigurationsdatei und melden Sie sich beim lokalen Host an. Wenn Sie interessiert sind, können Sie es selbst ausprobieren. Kopieren Sie den Code prüfen Wir haben alle spannenden Konfigurationen abgeschlossen, jetzt testen wir es Besuchen Sie das Front-End-Projekt: http://127.0.0.1:90/mock Wir sehen die folgende Schnittstelle, die anzeigt, dass unser Front-End-Projekt erfolgreich bereitgestellt wurde Wir versuchen, ein Konto zu registrieren und sehen eine Erfolgsmeldung. Das bedeutet, dass unser gesamtes Projekt erfolgreich bereitgestellt wurde. An diesem Punkt ist unsere Bereitstellung abgeschlossen und wir können die Schnittstelle simulieren und das Projekt schreiben. Streuen Sie Blumen ~~~ Zusammenfassen Es war schwierig, zum ersten Mal einen Artikel zu schreiben und ihn zum ersten Mal auf diese Weise zu veröffentlichen. Ich habe meine Gedanken geordnet und hoffe, dass sie Ihnen eine Hilfe sein können. Abschließend füge ich meine eigenen, häufig verwendeten Docker-Befehle und die in diesem Projekt verwendeten Konfigurationsdateien an. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: So installieren und ändern Sie das Anfangskennwort von mysql5.7.18
>>: So installieren und ändern Sie das Anfangskennwort von mysql5.7.18 unter Centos7.3
Die Gesamtarchitektur von MySQL ist in die Server...
more ist eines unserer am häufigsten verwendeten ...
MySQL 8.0.22 Download-, Installations- und Konfig...
Inhaltsverzeichnis Vorwort analysieren Daten insg...
1. Prinzip des besten linken Präfixes – Wenn mehr...
Problembeschreibung Als ich heute den Seitenstil ...
In diesem Artikelbeispiel wird der spezifische Co...
Erstellen Sie einen MySQL-Benutzer und autorisier...
Dieser Artikel beschreibt die MySQL-Einzeltabelle...
Inhaltsverzeichnis Web-Entwicklung 1. Überblick ü...
Dig-Einführung: Dig ist ein Tool, das DNS einschl...
Detailliertes Download-, Installations- und Konfi...
1. Rufen Sie die offizielle Docker-Website auf Ge...
Inhaltsverzeichnis 1. HttpGET 2. HTTP POST WebSoc...
Verwenden Sie „onInput(event)“, um festzustellen,...