Tutorial zur Verwendung von Docker Compose zum Erstellen von Confluence

Tutorial zur Verwendung von Docker Compose zum Erstellen von Confluence

Dieser Artikel verwendet die Lizenzvereinbarung „Namensnennung 4.0 International (CC BY 4.0)“. Sie können ihn gerne nachdrucken oder für die Verwendung ändern, müssen jedoch die Quelle angeben. Namensnennung 4.0 International (CC BY 4.0)

Autor: Su Yang

Erstellungszeit: 30. März 2019 Wortanzahl: 5170 Wörter Lesezeit: 11 Minuten Link zum Lesen dieses Artikels: https://soulteary.com/2019/03/30/construct-confluence-with-docker.html


Confluence mit Docker erstellen

Für die Zusammenarbeit in kleinen Teams oder wenn Sie Geld ausgeben möchten, um sich Sorgen zu ersparen, ist Confluence eine der besseren Optionen. Als ich Confluence jedoch kürzlich installierte, stellte ich fest, dass die offiziellen und Online-Installationsanweisungen relativ „rückständig“ und ineffizient waren, also schrieb ich diesen Artikel.

In diesem Artikel wird erläutert, wie Sie mit Docker Compose schnell Confluence erstellen und es mit Traefik verwenden. Wenn Sie den vorherigen Inhalt gelesen haben, sollten Sie das Problem in zehn Minuten lösen können, indem Sie diesem Artikel folgen.

Grundlegende Vorbereitung

  • Offizielles Container-Image auf Docker Hub: https://hub.docker.com/r/atlassian/confluence-server/tags

Hier erklären wir zwei repräsentative Versionen: 6.4 und 6.15

  • MySQL JDBC-Connector: https://dev.mysql.com/downloads/connector/j/5.1.html

Wenn Sie MySQL auch als Speicher-Backend verwenden möchten, müssen Sie diese Datei herunterladen. Normalerweise erhalten Sie ein komprimiertes Paket von mysql-connector-java-5.1.47.tar.gz . Nach der Dekomprimierung erhalten Sie mysql-connector-java-5.1.47.jar , das wir später verwenden werden.

Für die Nutzung alter Softwareversionen

Lassen Sie uns zunächst über die alte Version sprechen. Wenn Sie nur grundlegende Wiki-Funktionen benötigen, sollte die folgende Konfigurationsdatei Ihren Anforderungen genügen.

Version: '3'

Leistungen:

  Zusammenfluss:
    Bild: atlassian/confluence-server:6.4.3-alpine
    exponieren:
      - 8090
      - 8091
    Netzwerke:
      - traefik
    Beschriftungen:
      - „traefik.enable=true“
      - "traefik.port=8090"
      – „traefik.frontend.rule=Host:${DOMAIN}“
      - "traefik.frontend.entryPoints=http,https"
    Bände:
      - ./data:/var/atlassian/application-data/confluence
      - ./mysql-connector-java-5.1.47.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.47.jar

Netzwerke:
  traefik:
    extern: wahr

Nachdem wir die obige Datei als docker-compose.yml gespeichert haben, erstellen wir eine weitere grundlegende Konfigurationsdatei **.env **, die so einfach ist wie die obige Konfiguration. Der Dateiinhalt kann wie folgt sein.

DOMAIN=wiki.lab.com

Legen Sie docker-compose.yml , .env und mysql-connector-java-5.1.47.jar in dasselbe Verzeichnis. Wenn Ihr Traefik jetzt bereit ist, führen Sie docker-compose up aus und Ihr Dienst wird gestartet.

Greifen Sie einfach auf den von Ihnen konfigurierten Domänennamen zu, wie im Beispiel wiki.lab.com , und Sie können die Confluence-Weboberfläche konfigurieren. Wenn Sie noch nicht wissen, wie man Traefik verwendet, können Sie sich die alten Artikel ansehen, bei denen es sich auch um Tutorials unter zehn Minuten handelt.

Wenn Sie Confluence im öffentlichen Netzwerk bereitstellen möchten, können Sie auch einfach Basic Auth Authentifizierung hinzufügen, um diese bösartigen Anfragen aus dem öffentlichen Netzwerk zu blockieren.

Da wir Traefik verwenden, ist das Hinzufügen dieser Funktion sehr einfach und erfordert nur zwei Schritte:

Der erste Schritt besteht darin, dem Feld labels von docker-compose.yml den folgenden Inhalt hinzuzufügen.

– „traefik.frontend.auth.basic=${BASIC_AUTH}“

Der zweite Schritt besteht darin, htpasswd -nb user user auszuführen, um eine Textzeichenfolge mit dem Benutzernamen und dem verschlüsselten Passwort zu erhalten, etwa user:$apr1$MzgRxukq$MhYl/2JidzUNlHfyfIQF41 , und den Inhalt dann zu .env hinzuzufügen:

BASIC_AUTH=Benutzer:$apr1$MzgRxukq$MhYl/2JidzUNlHfyfIQF41

Wenn ein anderer Scanner die Anwendung direkt scannen möchte, wird dies durch die Basisauthentifizierung blockiert.

Fehler bei der Anwendungsintegritätsprüfung

Wenn Sie die Installation abgeschlossen haben und mit der Verwendung beginnen, wird in der oberen rechten Ecke der Benutzeroberfläche eine Warnmeldung angezeigt.

Basis-URL kann nicht überprüft werden

Dieses Problem wird in der offiziellen Knowledge Base erwähnt. Wenn Sie außerdem eine frühere Version (vor 6.6) verwenden, können Sie das Problem tatsächlich durch die Konfiguration Hosts lösen.

Fügen Sie beispielsweise eine Anweisung in docker-compose.yml hinzu, damit der Anwendungsserver nach der Anwendungsadresse auf dem lokalen Computer sucht, anstatt über die öffentliche Netzwerkadresse auf die Anwendung zuzugreifen. Die Referenzkonfiguration lautet wie folgt:

Version: '3'

Leistungen:

  Zusammenfluss:
    Bild: atlassian/confluence-server:6.4.3-alpine
    exponieren:
      - 8090
      - 8091
    Netzwerke:
      - traefik
    Beschriftungen:
      - „traefik.enable=true“
      - "traefik.port=8090"
      – „traefik.frontend.rule=Host:${DOMAIN}“
      - "traefik.frontend.entryPoints=http,https"
    Bände:
      - ./data:/var/atlassian/application-data/confluence
      - ./mysql-connector-java-5.1.47.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.47.jar
    zusätzliche_hosts:
      – „${DOMAIN}:127.0.0.1“

Netzwerke:
  traefik:
    extern: wahr

Ist das nicht ganz einfach? Wenn Ihre Anforderungen einfach sind, sollte die obige Konfiguration Ihren Anforderungen genügen.

Für die Nutzung neuer Softwareversionen

Als Nächstes sprechen wir darüber, wie Sie die neueste Version der Software verwenden. Da wir Container verwenden, ist das Aktualisieren der Version sehr einfach. Ändern Sie einfach die Versionsnummer des Images in der Konfigurationsdatei. Möchte ich beispielsweise die niedrigere Version 6.4.3 auf eine andere Version upgraden, muss ich in der Konfiguration lediglich 6.4.3 auf 6.15.1 ändern, zum Beispiel atlassian/confluence-server:6.15.1-alpine .

Die sonstige grundlegende Verwendung entspricht der alten Version der Software. Es gibt hier jedoch einige kleinere Probleme, die behoben werden müssen.

Die Datenbank kann nicht korrekt verbunden werden

WARNUNG: Es wird nicht empfohlen, eine SSL-Verbindung ohne Identitätsüberprüfung des Servers herzustellen. Gemäß den Anforderungen von MySQL 5.5.45+, 5.6.26+ und 5.7.6+ muss eine SSL-Verbindung standardmäßig hergestellt werden, wenn keine explizite Option festgelegt ist. Aus Kompatibilitätsgründen mit vorhandenen Anwendungen, die kein SSL verwenden, ist die Eigenschaft „verifyServerCertificate“ auf „false“ festgelegt. Sie müssen SSL entweder explizit deaktivieren, indem Sie useSSL=false festlegen, oder useSSL=true festlegen und einen Truststore für die Überprüfung des Serverzertifikats bereitstellen.

Um dieses Problem zu lösen, können Sie eine verschlüsselte MySQL-Verbindung konfigurieren und das Zertifikat im Container aktualisieren oder Parameter hinzufügen, um die obligatorische Verwendung verschlüsselter Verbindungsanforderungen zu deaktivieren. Letzteres ist einfacher und kann durchgeführt werden, wenn die Anforderungen nicht hoch sind.

Bearbeiten Sie hibernate.connection.url in der Datei data/confluence.cfg.xml , fügen Sie den Parameter ?useSSL=false nach der Verbindungsadresse hinzu und starten Sie die Anwendung neu.

Traefik Basic Auth und Tomcat interagieren

In der neuen Version der Softwarelogik gibt es eine zusätzliche Verarbeitung für Anfragen mit Basic Auth : Wenn Basic Auth oben konfiguriert ist, meldet die Anwendung, dass die Überprüfung fehlgeschlagen ist und Sie sich nicht beim System anmelden können.

Dies ist offensichtlich nicht der Zweck der Hinzufügung von Basic Auth, und bei der tatsächlichen Verwendung wird nicht empfohlen, die Authentifizierungsschnittstelle von Confluence direkt der Außenwelt zugänglich zu machen.

Die Lösung ist einfach. Fügen Sie in docker-compose.yml eine Zeile hinzu - "traefik.frontend.auth.basic.removeHeader=true" . Die Authentifizierungsinformationen von Traefik werden nur für Traefik verwendet. Wenn der Reverse-Proxy angewendet wird, werden die Authentifizierungsinformationen in der HTTP-Anforderung gelöscht.

Auch hier wird das Problem durch einen Neustart der App behoben.

Ein etwas problematischerer Gesundheitscheck

Da wir Traefik zum Mounten des Zertifikats verwenden, läuft die Anwendung tatsächlich hinter einem Proxyserver. Wenn Sie als Administrator auf die Konsole zugreifen, wird eine Warnmeldung angezeigt.

Ihre URL stimmt nicht überein

Die Basis-URL von Confluence ist auf http://wiki.lab.com eingestellt, Sie greifen jedoch von https://wiki.lab.com auf Confluence zu.

Im Hinblick auf die normale Verwendung der Anwendung ändern wir normalerweise das Protokoll, beispielsweise indem wir die Basis-URL der Site in https ändern. Nach der Korrektur erhalten Sie jedoch eine weitere Warnung.

Tomcat ist nicht richtig konfiguriert

Die Tomcat server.xml-Konfiguration ist falsch:
Das Schema sollte „https“ sein.
Der Proxy-Name sollte „IHRE_DOMAIN_URI“ sein.
ProxyPort sollte „443“ sein

Der Grund dafür ist, dass bei neueren Versionen von Anwendungen die Integritätsprüfungslogik mit einer Port- und Protokollbeurteilung einhergeht. Die glücklichen Zeiten, in denen niedrigere Versionen Traefik direkt zum Rückmounten von Zertifikaten verwenden konnten, sind für immer vorbei.

Zur Lösung des Problems sind drei Schritte erforderlich.

Der erste Schritt besteht darin, die im Container ausgeführte Tomcat-Konfiguration server.xml auf den lokalen Computer zu kopieren (da5582a01879 ist die von Docker PS erhaltene Container-PID).

docker cp da5582a01879:/opt/atlassian/confluence/conf/server.xml .

Aktualisieren Sie im zweiten Schritt die Konfiguration des Connectors mit Port 8090 auf folgenden Inhalt (achten Sie besonders auf die letzte Zeile):

<Anschluss
    Port="8090"
    VerbindungsTimeout="20000"
    UmleitungsPort="8443"
    maxThreads="48" minSpareThreads="10"
    enableLookups="false"
    AkzeptierenAnzahl="10"
    debug="0"
    URIEncoding="UTF-8"
    Protokoll="org.apache.coyote.http11.Http11NioProtocol"
    ProxyName="wiki.lab.com" ProxyPort="443" Schema="https"/>

Der dritte Schritt besteht darin, docker-compose.yml zu aktualisieren.

Fügen Sie dem Feld volumes den folgenden Inhalt hinzu:

- ./server.xml:/opt/atlassian/confluence/conf/server.xml

Löschen Sie auch den Inhalt des Felds extra_hosts .

Starten Sie die App neu und alles sollte in Ordnung sein.

Vollständige Konfigurationsdatei

Zur einfacheren Verwendung wird hier eine vollständige Referenzkonfiguration angegeben.

Version: '3'

Leistungen:

  Zusammenfluss:
    Bild: atlassian/confluence-server:6.15.1-alpine
    exponieren:
      - 8090
      - 8091
    Netzwerke:
      - traefik
    Beschriftungen:
      - „traefik.enable=true“
      - "traefik.port=8090"
      – „traefik.frontend.rule=Host:${DOMAIN}“
      - "traefik.frontend.entryPoints=http,https"
      - „traefik.frontend.auth.basic.removeHeader=true“
      – „traefik.frontend.auth.basic=${BASIC_AUTH}“
    Bände:
      - ./data:/var/atlassian/application-data/confluence
      - ./mysql-connector-java-5.1.47.jar:/opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.47.jar
      - ./server.xml:/opt/atlassian/confluence/conf/server.xml


Netzwerke:
  traefik:
    extern: wahr

endlich

Obwohl Confluence eine gute Lösung für Teams ist, ist es für Einzelpersonen/Teams möglicherweise besser, das vollständig quelloffene und kostenlose WordPress mit Anpassungsmöglichkeiten zu verwenden. Im nächsten Artikel werde ich einige Anpassungsmöglichkeiten von WordPress für Wissensmanagementzwecke vorstellen.

Oben finden Sie Einzelheiten zur Verwendung von Docker zum Erstellen von Confluence. Weitere Informationen zur Verwendung von Docker zum Erstellen von Confluence finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Implementierung der Master-Slave-Replikation im Docker Compose-Deployment
  • Detailliertes Tutorial zum Bereitstellen einer benutzerdefinierten Apollo-Umgebung mit Docker-Compose
  • Beispiel für die Verwendung von Docker Compose zum Erstellen einer Consul-Clusterumgebung
  • Implementierung der ELK-Bereitstellungsmethode mit einem Klick in Docker Compose
  • Detaillierte Erklärung der Lösung für das zu langsame Docker-Compose
  • Docker Compose-Übung und Zusammenfassung

<<:  Einführung in 10 Hooks in React

>>:  So platzieren Sie große Bilder auf kleinem Raum einer Webseite

Artikel empfehlen

Warum sollte CSS im Head-Tag platziert werden?

Denken Sie darüber nach: Warum sollte css im head...

Velocity.js implementiert den Seiten-Scrolling-Umschalteffekt

Heute werde ich ein kleines Javascript-Animations...

Perfekte Lösung für das Problem des CSS-Hintergrundbildpfads im Webpack

Innerhalb des Style-Tags der Vue-Komponente befin...

Installieren Sie MySQL 5.7 unter Ubuntu 18.04

Dieser Artikel wurde unter Bezugnahme auf die off...

Beispiel für die Validierung eines JavaScript-Formulars

HTML-Formulare werden häufig verwendet, um Benutz...

So verwenden Sie das Schreiben von Dateien zum Debuggen einer Linux-Anwendung

Unter Linux ist alles eine Datei, daher besteht d...

Detaillierte Einführung in die Mysql-Datumsabfrage

Abfrage des aktuellen Datums AKTUELLES DATUM AUSW...

Die entsprechenden Attribute und Verwendung von XHTML-Tags in CSS

Als ich anfing, Webseiten mit XHTML CSS zu entwer...

Zwei Möglichkeiten, den 30-Sekunden-Werbecode aus dem Youku-Video zu entfernen

Ich glaube, jeder kennt dieses Gefühl: Ein Video m...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7

In diesem Tutorial erfahren Sie alles über die In...

Detailliertes Tutorial zur Installation von MySQL 8.0.13 (rpm) auf Centos7

yum oder rpm? Die Yum-Installationsmethode ist se...