Detailliertes Tutorial zum Bereitstellen von Apollo mit Docker

Detailliertes Tutorial zum Bereitstellen von Apollo mit Docker

1. Einleitung

Ich werde hier nicht näher auf Apollo eingehen. Auf der offiziellen Website https://github.com/ctripcorp/apollo wurde es bereits sehr deutlich erklärt. Ich werde es hier nicht erklären. Wenn Sie es noch nicht kennen, können Sie auf der offiziellen Website mehr erfahren.

Dieser Artikel zeichnet lediglich auf, wie ich Apollo und seinen Cluster mithilfe von Docker bereitgestellt, es mit allen geteilt und eine Aufzeichnung für mich selbst erstellt habe.

Hinweis: Ich habe mit der direkten Bereitstellung begonnen und die Datenbank gemäß der offiziellen Website selbst erstellt und initialisiert.

2. Quellcode-Kompilierung

2.1 Netzwerkstrategie

Die Netzwerkrichtlinie kann direkt wie auf der offiziellen Website beschrieben verwendet werden. Bearbeiten Sie insbesondere apollo-configservice/src/main/resources/application.yml bzw. apollo-adminservice/src/main/resources/application.yml und fügen Sie dann die zu ignorierende Netzwerkkarte hinzu.

Das folgende Beispiel zeigt, dass für apollo-configservice die Netzwerkkarten docker0 und veth.* ignoriert werden, wenn sie bei Eureka registriert sind.

Frühling:
   Anwendung:
     Name: apollo-Konfigurationsdienst
   Profile:
    aktiv: ${apollo_profile}
   Wolke:
    inetutils:
     Ignorierte Schnittstellen:
      -docker0
      -veth.*

Hinweis: Gehen Sie beim Ändern von application.yml vorsichtig vor und machen Sie keine Fehler bei anderen Informationen, wie etwa spring.application.name.

2.2 Dynamisches Festlegen eines registrierten Netzwerks

Wenn Sie Docker zum Erstellen eines Clusters verwenden, müssen sowohl Adminservice als auch Configservice ihre Adressen beim Registrierungscenter registrieren. Wenn die Registrierungs-IP nicht angegeben ist, wird das Netzwerk innerhalb von Docker registriert, was zu einer Netzwerktrennung führt.

Fügen Sie den folgenden Code zu apollo-configservice/src/main/resources/bootstrap.yml und apollo-adminservice/src/main/resources/bootstrap.yml hinzu.

Heureka:
 Beispiel:
    IP-Adresse: ${eureka.instance.ip-address}

Der Wert wird hier aus der Umgebungsvariable übernommen und eine Konfiguration außerhalb des Containers bietet mehr Flexibilität bei der Bereitstellung.

An diesem Punkt ist die Änderung des Quellcodes abgeschlossen und Sie können ihn direkt erstellen und verpacken, um die den drei Diensten entsprechenden ZIP-Pakete zu erhalten.

Wenn Sie zu faul sind, es zu ändern, können Sie den geänderten Quellcode auch direkt von https://github.com/yuelicn/apollo herunterladen und direkt verpacken.

3. Dockerfile schreiben

Das Dockerfile von Apollo ist sehr einfach, Sie können einfach das von der offiziellen Website bereitgestellte verwenden. Unten sehen Sie ein Beispiel für einen Adminservice.

# Dockerfile für apollo-adminservice
# Erstellen mit:
# docker build -t apollo-adminservice .
# Ausführen mit:
# docker run -p 8090:8090 -d --name apollo-adminservice apollo-adminservice

VON java:8-jre
WARTUNGSMITARBEITER Louis

ENV VERSION 1.5.0

Führen Sie apt-get install unzip aus.

ADD apollo-adminservice-${VERSION}-github.zip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip

AUSFÜHREN unzip /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip -d /apollo-adminservice \
  && rm -rf /apollo-adminservice/apollo-adminservice-${VERSION}-github.zip \
  && sed -i '$d' /apollo-adminservice/scripts/startup.sh \
  && echo "tail -f /dev/null" >> /apollo-adminservice/scripts/startup.sh

EXPOSE 8090

CMD ["/apollo-adminservice/scripts/startup.sh"]

Es ist zu beachten, dass

1: Die Version muss entsprechend der Version, die Sie verpacken, geändert werden
2: Ändern Sie Ihren Pfad, wenn Sie das Zip-Paket hinzufügen

Da die Dockerfile-Dateien der drei Dienste grundsätzlich gleich sind, gehe ich hier nicht näher darauf ein. Freunde, die es brauchen, können es direkt von https://github.com/yuelicn/docker-apollo herunterladen.

4 Docker-Compose schreiben

4.1 apollo-configservice-compose.yml

Version: "3"
Leistungen:
 apollo-Konfigurationsdienst:
  Containername: apollo-configservice
  Erstellen: apollo-configservice/
  Bild: apollo-configservice
  Häfen:
   8080: 8080
  Bände:
   – „/docker/apollo/logs/100003171:/opt/logs/100003171“
  Umfeld:
   – spring_datasource_url=jdbc:mysql://127.0.0.1:8306/ApolloConfigDB_TEST?characterEncoding=utf8
   -spring_datasource_username=root
   -spring_datasource_password=mysql2019*
   -eureka.instance.ip-address=172.11.11.11

  Neustart: immer

Zu beachtende Punkte:

1: Geben Sie den Speicherort Ihrer Docker-Datei im Build an:
2: Geben Sie Ihre Datenbankkonfigurationsinformationen in der Umgebungsvariable an
3: eureka.instance.ip-address gibt die bei eureka registrierte Adresse an. Am besten verwenden Sie die Intranetadresse Ihres physischen Computers.

Besonderer Hinweis: Vor dem Start empfiehlt es sich, den Wert eureka.service.url in ServerConfig in der ApolloConfigDB-Datenbank auf eine bestimmte IP zu ändern
Start-up:

docker-compose -f apollo-configservice-compose.yml up --build -d

4.2 apollo-adminservice-compose.yml

Der Inhalt von apollo-adminservice-compose.yml ist grundsätzlich derselbe wie der von apollo-configservice-compose.yml, daher werde ich sie hier nicht einzeln erklären.

4.3 apollo-portal-compose.yml

Version: "3"
Leistungen:
 Apollo-Portal:
  Containername: Apollo-Portal
  Build: Apollo-Portal/
  Bild: Apollo-Portal
  Häfen:
   -8070:8070
  Bände:
   – „/docker/apollo/logs/100003173:/opt/logs/100003173“
   – „/apollo-portal/config/apollo-env.properties:/apollo-portal/config/apollo-env.properties“
  Umfeld:
   – spring_datasource_url=jdbc:mysql://127.0.0.1:8306/ApolloPortalDB?characterEncoding=utf8
   -spring_datasource_username=root
   -spring_datasource_password=mysql2019*
   

  Neustart: immer

Notiz:
1: Beachten Sie, dass die folgenden grundsätzlich mit dem obigen Konfigurationsdienst identisch sind
2: Besondere Hinweise sind wichtig! wichtig! wichtig! wichtig! wichtig! Bände: Ich werde
Die Datei apollo-env.properties wird außerhalb des Containers abgebildet. Nachdem Sie Ihre eigene Datei apollo-env.properties konfiguriert haben, geben Sie Ihre eigene Mount-Adresse ein und ändern Sie die Adresse vor dem Doppelpunkt „/apollo-portal/config/apollo-env.properties“ in Ihre eigene. Diese Konfigurationsdatei muss vor dem Start angegeben werden.
Start-up

docker-compose -f apollo-configservice-compose.yml up --build -d

4.3.1 apollo-env.properties

local.meta=http://localhost:8080
dev.meta=${dev_meta}
fat.meta=${fat_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}

Konfigurieren Sie Ihre eigene Metaadresse. Wenn Sie keine haben, können Sie diese direkt löschen. Wenn Sie es nicht verstehen, können Sie auf der offiziellen Website weitere Informationen erhalten. Nachdem die Umgebung konfiguriert wurde, ändern Sie den Wert apollo.portal.envs in ApolloPortalDB.ServerConfig in der entsprechenden Datenbank und geben Sie Ihre konfigurierte Umgebung ein. Andernfalls können wir auf der Portalverwaltungsseite nur die Standardentwicklungsumgebung sehen.

5. Docker-compose.yml vervollständigen

Wenn Ihnen das mühsame Einzelstarten nicht zusagt, können Sie auch mit einer fertigen Zusammenstellung beginnen.

Version: "3"
Leistungen:
 apollo-Konfigurationsdienst:
  Containername: apollo-configservice
  Erstellen: apollo-configservice/
  Bild: apollo-configservice
  Häfen:
   8080: 8080
  Bände:
   – „/docker/apollo/logs/100003171:/opt/logs/100003171“
  Umfeld:
   – spring_datasource_url=jdbc:mysql://47.xx.xx.209:8306/ApolloConfigDB?characterEncoding=utf8
   -spring_datasource_username=root
   -spring_datasource_password=Tusdao@xx*
   -eureka.instance.ip-address=172.11.11.11
  Neustart: immer

 apollo-Admindienst:
  Containername: apollo-adminservice
  Erstellen: apollo-adminservice/
  Bild: apollo-adminservice
  Häfen:
   -8090:8090
  Bände:
   – „/docker/apollo/logs/100003172:/opt/logs/100003172“
  Umfeld:
   – spring_datasource_url=jdbc:mysql://47.xx.xx.209:8306/ApolloConfigDB?characterEncoding=utf8
   -spring_datasource_username=root
   -spring_datasource_password=Tusdao@xx*
   -eureka.instance.ip-address=172.11.11.11
  hängt ab von:
   - Apollo-Konfigurationsdienst

  Neustart: immer

 Apollo-Portal:
  Containername: Apollo-Portal
  Build: Apollo-Portal/
  Bild: Apollo-Portal
  Häfen:
   -8070:8070
  Bände:
   – „/docker/apollo/logs/100003173:/opt/logs/100003173“
   – „/Apollo/docker-image/apollo-portal/config/apollo-env.properties:/apollo-portal/config/apollo-env.properties“
  Umfeld:
   – spring_datasource_url=jdbc:mysql://47.xx.xx.209:8306/ApolloPortalDB?characterEncoding=utf8
   -spring_datasource_username=root
   -spring_datasource_password=Tusdao@xx*
  hängt ab von:
   - Apollo-Adminservice
  Neustart: immer

Hinweis: Die zu ändernden Stellen sind grundsätzlich die gleichen wie bei der Einzelnversion, daher gehe ich hier nicht näher darauf ein.

An diesem Punkt ist die Docker-Bereitstellung von Apoll im Wesentlichen abgeschlossen. Wenn Sie eine vollständige Docker-Bereitstellungsdatei benötigen, gehen Sie bitte zu https://github.com/yuelicn/docker-apollo

6 Clusteraufbau

Der Aufbau des Apollo-Clusters ist sehr einfach. Sie müssen nur zwei Stellen ändern. Zur Veranschaulichung verwenden wir die formale Umgebung (pro).
In der Pro-Umgebung haben wir zwei Sätze von Adminservice und Configservice erstellt und die Datenbank ist dieselbe ApolloConfigDB.

1: Schreiben Sie sowohl den eureka.service.url-Wert als auch die Eureka-Verbindungsinformationen durch Kommas getrennt in ServerConfig: http://IP-1:port/eureka, http://IP-2:port/eureka

2: Ändern Sie die Verbindungsinformationen der entsprechenden Umgebung in apollo-env.properties, beispielsweise: pro.meta=http://IP-1:port,http://IP-2:port. Die Adressen können durch Kommas getrennt werden.

Starten Sie anschließend den Dienst neu und fertig.

Abschließend wird betont, dass Adminservice und Configservice für jede Umgebung, einschließlich der Datenbank, separat bereitgestellt werden müssen. Es muss nur ein Portalsatz bereitgestellt werden.

OK! Fertig. Das Obige ist mein persönlicher Build-Bericht. Ich hoffe, es hilft Ihnen. Wenn etwas falsch ist, korrigieren Sie mich bitte.

Adresse des geänderten Quellcodes: https://github.com/yuelicn/apollo

Der organisierte Docker-Apollo: https://github.com/yuelicn/docker-apollo

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:
  • Implementierung der Bereitstellung des Apollo-Konfigurationscenters mithilfe von Docker in CentOS7
  • Detailliertes Tutorial zum Bereitstellen einer benutzerdefinierten Apollo-Umgebung mit Docker-Compose

<<:  MySQL Server IO 100 % Analyse- und Optimierungslösung

>>:  Fallstricke und Lösungen für das Upgrade von MySQL 5.7.23 in CentOS 7

Artikel empfehlen

Detaillierte Erklärung von BOM und DOM in JavaScript

Inhaltsverzeichnis BOM (Browserobjektmodell) 1. F...

Detaillierte Erklärung der TMPF-Mounts im Docker-Datenspeicher

Bevor Sie diesen Artikel lesen, hoffe ich, dass S...

Detaillierter Prozessbericht der Nginx-Installation und -Konfiguration

Inhaltsverzeichnis 1 Einführung in nginx 1 Was is...

Detaillierte Erklärung der Funktionen jedes Ports von Tomcat

Aus der Tomcat-Konfigurationsdatei können wir ers...

Aktualisierungen für React Router V6

Inhaltsverzeichnis ReactRouterV6-Änderungen 1. &l...

Detaillierte Erklärung der XML-Syntax

1. Dokumentationsregeln 1. Groß-/Kleinschreibung b...

21 Best Practices zur MySQL-Standardisierung und -Optimierung!

Vorwort Jede gute Angewohnheit ist ein Schatz. Di...

Mit CSS3 können Sie eine schwebende Wolkenanimation erzielen

Wirkung der Operation html <Kopf> <meta ...

Verwenden Sie Docker, um mehrere PHP-Versionen auf dem Server auszuführen

PHP7 ist bereits seit einiger Zeit auf dem Markt ...

Schritte zur Installation von MySQL 5.7.10 auf Windows Server 2008 R2

Installation mithilfe des MSI-Installationspakets...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.18 (Linux)

Dieser Artikel zeichnet das grafische Tutorial zu...