Docker Compose を使用して Confluence を構築するチュートリアル

Docker Compose を使用して Confluence を構築するチュートリアル

この記事は「Attribution 4.0 International (CC BY 4.0)」ライセンス契約を使用しています。転載または改変して使用することは自由ですが、出典を明記する必要があります。 表示 4.0 国際 (CC BY 4.0)

著者: 蘇楊

作成日: 2019年3月30日 単語数: 5170語 読了時間: この記事を読むのに11分 リンク: https://soulteary.com/2019/03/30/construct-confluence-with-docker.html


Docker で Confluence を構築する

小規模なチームでのコラボレーションや、心配事を減らすためにお金をかけたい場合、Confluence はより良い選択肢の 1 つです。しかし、最近 Confluence をインストールしたところ、公式およびオンラインのインストール手順が比較的「時代遅れ」で非効率的であることがわかったので、この記事を書きました。

この記事では、 Docker Compose を使ってConfluenceを素早くビルドする方法と、 Traefikで使う方法を紹介します。前回の内容を読んでいれば、この記事の通りに進めば 10 分で解決できるはずです。

基本的な準備

  • Docker Hub の公式コンテナ イメージ: https://hub.docker.com/r/atlassian/confluence-server/tags

ここでは代表的なバージョン6.46.15について説明します。

  • MySQL JDBC コネクタ: https://dev.mysql.com/downloads/connector/j/5.1.html

MySQL をストレージ バックエンドとして使用することを選択した場合は、このファイルをダウンロードする必要があります。通常は、 mysql-connector-java-5.1.47.tar.gzの圧縮パッケージが提供されます。解凍すると、後で使用するmysql-connector-java-5.1.47.jarが提供されます。

古いバージョンのソフトウェアを使用する場合

まず、古いバージョンについてお話ししましょう。基本的な Wiki 機能だけが必要な場合は、次の構成ファイルでニーズを満たすことができます。

バージョン: '3'

サービス:

  合流:
    イメージ: atlassian/confluence-server:6.4.3-alpine
    さらす:
      - 8090
      - 8091
    ネットワーク:
      - トラエフィク
    ラベル:
      - "traefik.enable=true"
      - "traefik.port=8090"
      - "traefik.frontend.rule=ホスト:${DOMAIN}"
      - "traefik.frontend.entryPoints=http,https"
    ボリューム:
      - ./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

ネットワーク:
  トラエフィク:
    外部: 真

上記のファイルをdocker-compose.ymlとして保存した後、上記の設定と同じくらいシンプルな別の基本設定ファイル **.env ** を作成します。ファイルの内容は次のようになります。

ドメイン=wiki.lab.com

docker-compose.yml.envmysql-connector-java-5.1.47.jar を同じディレクトリに配置します。この時点で Traefik の準備ができている場合は、 docker-compose upを実行するとサービスが開始されます。

例のwiki.lab.comなど、設定したドメイン名にアクセスするだけで、Confluence Web インターフェースを設定できます。 Traefik の使い方がまだわからない場合は、10 分以内で完了するチュートリアルである古い記事を確認してください。

Confluence をパブリック ネットワークに展開することを選択した場合は、 Basic Auth認証を追加するだけで、パブリック ネットワークからの悪意のあるリクエストをブロックできます。

私たちは Traefik を使用しているため、この機能を追加するのは非常に簡単で、必要な手順は 2 つだけです。

最初のステップは、 docker-compose.ymllabelsフィールドに次のコンテンツを追加することです。

- "traefik.frontend.auth.basic=${BASIC_AUTH}"

2 番目のステップでは、 htpasswd -nb user userを実行してuser:$apr1$MzgRxukq$MhYl/2JidzUNlHfyfIQF41などのユーザー名と暗号化されたパスワードを含むテキスト文字列を取得し、その内容を.envに追加します。

BASIC_AUTH=ユーザー:$apr1$MzgRxukq$MhYl/2JidzUNlHfyfIQF41

別のスキャナーがアプリケーションを直接スキャンしようとすると、Basic 認証によってブロックされます。

アプリケーションヘルスチェックエラー

インストールが完了して使用を開始すると、インターフェースの右上隅に警告メッセージが表示されます。

ベース URL を確認できません

この問題は公式ナレッジベースに記載されています。以前のバージョン (6.6 より前) も使用している場合は、 Hostsを構成することで問題を解決できます。

たとえば、 docker-compose.ymlにステートメントを追加して、アプリケーション サーバーがパブリック ネットワーク アドレス上のアプリケーションにアクセスする代わりに、ローカル マシン上のアプリケーション アドレスを検索するようにします。参照構成は次のとおりです。

バージョン: '3'

サービス:

  合流:
    イメージ: atlassian/confluence-server:6.4.3-alpine
    さらす:
      - 8090
      - 8091
    ネットワーク:
      - トラエフィク
    ラベル:
      - "traefik.enable=true"
      - "traefik.port=8090"
      - "traefik.frontend.rule=ホスト:${DOMAIN}"
      - "traefik.frontend.entryPoints=http,https"
    ボリューム:
      - ./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
    追加ホスト:
      - "${ドメイン}:127.0.0.1"

ネットワーク:
  トラエフィク:
    外部: 真

とても簡単ではないでしょうか。基本的なニーズであれば、上記の構成でニーズを満たすことができるはずです。

新しいバージョンのソフトウェアの使用について

次に、最新バージョンのソフトウェアを使用する方法について説明します。コンテナを使用するため、バージョンの更新は非常に簡単です。構成ファイル内のイメージのバージョン番号を変更するだけです。たとえば、下位バージョン6.4.3別のバージョンにアップグレードする場合は、構成内の6.4.3 6.15.1に変更するだけです (例: atlassian/confluence-server:6.15.1-alpine

その他の基本的な使用方法は、ソフトウェアの古いバージョンと一致しています。ただし、ここで対処する必要がある小さな問題がいくつかあります。

データベースに正しく接続できません

警告: サーバーの ID 検証なしで SSL 接続を確立することは推奨されません。MySQL 5.5.45+、5.6.26+、および 5.7.6+ の要件によると、明示的なオプションが設定されていない場合は、デフォルトで SSL 接続を確立する必要があります。SSL を使用していない既存のアプリケーションに準拠するには、verifyServerCertificate プロパティを 'false' に設定します。useSSL=false を設定して SSL を明示的に無効にするか、useSSL=true を設定してサーバー証明書の検証用にトラストストアを提供する必要があります。

この問題を解決するには、暗号化された MySQL 接続を構成してコンテナ内の証明書を更新するか、暗号化された接続要求の必須使用をオフにするパラメータを追加することを選択できます。後者はより簡単で、要件が高くない場合は実行できます。

data/confluence.cfg.xmlファイル内のhibernate.connection.urlを編集し、接続アドレスの後に?useSSL=falseパラメータを追加して、アプリケーションを再起動します。

Traefik Basic AuthとTomcatの相互作用

ソフトウェア ロジックの新しいバージョンでは、 Basic Authを使用したリクエストに対して追加の処理が行われます。Basic Auth が上記で構成されている場合、アプリケーションは検証に失敗したことを通知し、システムにログインできません。

これは明らかに Basic Auth を追加する目的ではなく、実際の使用では Confluence の認証インターフェースを外部に直接公開することは推奨されません。

解決策は簡単です。docker docker-compose.yml- "traefik.frontend.auth.basic.removeHeader=true"行を追加します。Traefik の認証情報は Traefik にのみ使用されます。リバース プロキシが適用されると、HTTP リクエスト内の認証情報は削除されます。

繰り返しますが、アプリを再起動すると問題は解決します。

ちょっと面倒な健康診断

証明書をマウントするために Traefik を使用しているため、アプリケーションは実際にはプロキシ サーバーの背後で実行されます。管理者を使用してコンソールにアクセスすると、警告メッセージが表示されます。

URLが一致しません

Confluence のベース URL は http://wiki.lab.com に設定されていますが、https://wiki.lab.com から Confluence にアクセスしています。

アプリケーションの通常の使用を考慮して、通常はサイトのベース URL をhttpsに変更するなど、プロトコルを変更します。しかし、修正後には別の警告が表示されます。

Tomcatが正しく設定されていません

Tomcat server.xml 構成が正しくありません:
スキームは「https」である必要があります
proxyName は 'YOUR_DOMAIN_URI' である必要があります
proxyPort は '443' である必要があります

その理由は、アプリケーションの新しいバージョンでは、ヘルス チェック ロジックにポートとプロトコルの判断が伴うためです。下位バージョンで Traefik を直接使用して証明書を逆マウントできた幸せな時代は、もう終わりました。

問題を解決するには 3 つのステップが必要です。

最初のステップは、コンテナ内の Tomcat 実行構成server.xmlローカル コンピュータにコピーすることです (da5582a01879 は docker ps によって取得されたコンテナ PID です)。

次のコマンドを実行して、confluence ディレクトリに移動します。

2 番目の手順では、ポート 8090 のコネクタの構成を次の内容に更新します (最後の行に特に注意してください)。

<コネクタ
    ポート="8090"
    接続タイムアウト = "20000"
    リダイレクトポート="8443"
    最大スレッド数="48" 最小スペアスレッド数="10"
    enableLookups="false"
    受け入れ回数 = "10"
    デバッグ="0"
    URIエンコーディング="UTF-8"
    プロトコル="org.apache.coyote.http11.Http11NioProtocol"
    proxyName="wiki.lab.com" proxyPort="443" スキーム="https"/>

3 番目のステップはdocker-compose.yml構成ファイルを更新することです。

volumesフィールドに次のコンテンツを追加します。

./server.xml:/opt/atlassian/confluence/conf/server.xml を参照してください。

extra_hostsフィールドの内容も削除します。

アプリを再起動すると、すべて正常になるはずです。

完全な設定ファイル

使いやすさを考慮して、完全なリファレンス構成をここに示します。

バージョン: '3'

サービス:

  合流:
    イメージ: atlassian/confluence-server:6.15.1-alpine
    さらす:
      - 8090
      - 8091
    ネットワーク:
      - トラエフィク
    ラベル:
      - "traefik.enable=true"
      - "traefik.port=8090"
      - "traefik.frontend.rule=ホスト:${DOMAIN}"
      - "traefik.frontend.entryPoints=http,https"
      - "traefik.frontend.auth.basic.removeHeader=true"
      - "traefik.frontend.auth.basic=${BASIC_AUTH}"
    ボリューム:
      - ./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 を参照してください。


ネットワーク:
  トラエフィク:
    外部: 真

やっと

Confluence はチームにとって良いソリューションですが、カスタマイズ機能を備えた個人/チームには、完全にオープンソースで無料の WordPress を使用する方が良いかもしれません。次の記事では、ナレッジ マネジメントを目的とした WordPress のカスタマイズをいくつか紹介します。

以上がDockerを使用してConfluenceを構築する詳細です。Dockerを使用してConfluenceを構築する方法の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • docker compose デプロイメントにおけるマスタースレーブレプリケーションの実装
  • docker-compose を使用して Apollo カスタム環境をデプロイする詳細なチュートリアル
  • docker compose を使用して consul クラスタ環境を構築する例
  • Docker Compose ワンクリック ELK デプロイ方式の実装
  • docker-compose が遅すぎる場合の解決策の詳細な説明
  • Docker Compose の実践とまとめ

<<:  ウェブページ上の小さなスペースに大きな画像を配置する方法

>>:  MySQL データ型の選択原則

推薦する

WeChatミニプログラムが星評価を実装

この記事では、WeChatアプレットで星評価を実装するための具体的なコードを参考までに紹介します。具...

HTMLにおけるbackground-image属性の設定の詳細な説明

写真といえば、まず背景画像が思い浮かびます。私たちの装飾の多くは背景画像を使用して実現されているから...

W3C標準に準拠したHTML標準で注意すべき点を詳細に解説

XML/HTML コードコンテンツをクリップボードにコピー<!DOCTYPE html PUB...

流れと動的なライン効果を実現する純粋なCSSコード

アイデア:外側のボックスは背景を設定し、内側のボックスは背景の幅と高さを設定し、ボックスを動かすアニ...

HTML タグ マーキーを使用してスクロール効果を実現する簡単な方法 (必読)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

Linuxカーネルの浮動小数点演算のサポートに関する簡単な説明

現在、ほとんどの CPU は浮動小数点ユニット (FPU) をサポートしています。FPU は、プロセ...

SpringBoot と Docker の統合の詳細なプロセス

目次1. デモプロジェクト1.1 インターフェースの準備1.2 構成の準備2. Dockerがリモー...

Redo ログと Undo ログに基づく MySQL クラッシュ回復の分析

目次MySQLクラッシュ回復プロセス1. ブラックボックス下のデータフローを更新する2. やり直しロ...

純粋な CSS ヘッダーの実装コードを修正

純粋な CSS で固定ヘッダーを実装するのが難しい主な理由は 2 つあります。まず、最大のシェアを持...

border-radius 値の設定に関する質問

問題記録今日はプログレスバーに似た小さなコンポーネントを完成させるつもりでした。プロトタイプは次のよ...

M1 ProチップでVueプロジェクトを開始する方法

目次導入Homebrewをインストールするnvmをインストールするノードをインストールするインストー...

JavaScript キャンバスで 9 マスのグリッドカットの効果を実現

この記事では、9グリッドカット効果を実現するためのキャンバスの具体的なコードを紹介します。具体的な内...

WeChatアプレットのスクロールビューは、プルアップ時にデータの読み込みを重複させるソリューションを実装しています。

WeChat アプレットのスクロール ビューでは、プルアップして読み込むときにバグが多く発生します...

Vue でユーザー権限に基づいてルートを動的に追加する方法

ユーザーの権限に応じて異なるメニュー ページを表示します。知識ポイントルートガード(事前ガードを使用...

Vueフロントエンドの効率的な開発のためのレンダリング手順をリストします

v-for ディレクティブリストといえば、ループについても触れなければなりません。v-for 命令は...