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 データ型の選択原則

推薦する

HTML の小さなタグの使用に関するヒント

<em></em> などのフレーズ要素を使用すると、意図した視覚スタイルを維...

ネイティブ JavaScript でオブジェクトが空かどうかをチェックする実装例

目次ネイティブJavaScriptとはA. 新しいブラウザでnullオブジェクトをチェックするコンス...

jsを使用して動的な背景を実現する

この記事の例では、動的な背景を実現するためのjsの具体的なコードを参考までに共有しています。具体的な...

ウェブサイトデザインにおいて非常に重要な概念であるdiv+floatの分析

ウェブサイトの構築では、HTML と CSS に関するさまざまな問題に常に遭遇します。ウェブサイト ...

MySQL バッチ挿入とユニークインデックスの問題に対する解決策

MySQL バッチ挿入の問題プロジェクトを開発しているときに、古いシステムの基本データを事前にインポ...

Dockerコンテナを使用する簡単な例

目次1. イメージをプルする2. イメージを実行する3. コンテナ内でアプリケーションをテストする4...

MySQLの実行原理、論理階層化、データベース処理エンジンの変更について詳しく説明します

長い間 MySQL を使ってきたので、SQL 文はすでに覚えていると思います。そこで、その実行原理を...

Vue はシームレスなカルーセル効果を実現

この記事では、シームレスなカルーセル効果を実現するためのVueの具体的なコードを参考までに紹介します...

MySQL コマンドラインでよく使われる 18 個のコマンド

日常的なウェブサイトの保守と管理では、多くの SQL ステートメントが使用されます。熟練して使用する...

MySQL の単一テーブル クエリ操作例の詳細な説明 [構文、制約、グループ化、集計、フィルタリング、並べ替えなど]

この記事では、MySQL の単一テーブル クエリ操作について説明します。ご参考までに、詳細は以下の通...

JavaScript でモバイル モーダル ボックスの効果を実現

この記事では、モバイルモーダルボックス効果を実現するためのJavaScriptの具体的なコードを参考...

Docker パッケージング ノード プロジェクトのプロセスの説明

バックエンド プログラマーとして、フロントエンドのものをいじらなければならないこともあります。そこで...

mysql5.7 のエンコーディングを utf8mb4 に設定する方法

最近、問題に遭遇しました。モバイル端末の絵文字や一部の絵文字は 4 バイトですが、UTF-8 は 3...

Centos7.5 は mysql5.7.24 バイナリ パッケージの展開をインストールします

1. 環境整備:オペレーティング システム: CentOS Linux リリース 7.5.1804 ...

MySQL における 8 つの一般的な SQL 使用例

序文MySQL は、2016 年もデータベースの人気において力強い成長傾向を維持し続けました。 My...