Docker

Dockerでナレッジ共有OSSシステム「knowledge」を簡単構築

Docker

「社内で技術情報などのナレッジベースを共有したい!」という要望はどの会社でも多くあるかと思います。

私が以前にいた会社では、ナレッジベース蓄積ツールとして、Lotus Notesの利用から始まり、Sharepointに移行したり、共有フォルダ上のファイル(Wordやテキスト)や、GitlabやRedmine上のwiki、Microsoft Onenoteなどなど・・・様々な方法でいろいろな場所に保管されていて会社全体として情報を蓄積できている体制ではありませんでした。

開発者が慣れているツールを選択しがちで強制するのが難しいということもあります。結局のところ、全員が納得できるようなナレッジツールはないというのが個人的な意見です。

そんな中で、今回はOSSでナレッジベースQiitaライクに構成することができる「Knowledge(ナレッジ) 」という自社サーバーにインストールできるオープンソースの情報共有サービスをDockerコンテナで簡単に構築してみました。

Knowledgeではブラウザだけで記事を見ることはもちろん、Markdownを使って記事をかくことができます。

また、コピペで直接画像貼り付けなどもできるため、他のツールのように画像を1回サーバへアップしてから挿入して・・・という煩わしさもなく、かなり使い勝手のいいツールだと思います。

試した環境

以下の環境でためしました。とりあえずの動作確認のためにWindows 10 Pro上のDocker環境で試してます。

OS:Windows 10 Pro

Dockerをインストールする

Dockerを稼働させるためにDocker for Windowsをインストールします。

Docker for Windowsをインストールすると合わせてdocker-composeもインストールされます。

knowledgeコンテナの構築

私の環境では「C:\Docker」というフォルダを作成して、その下にknowledgeコンテナ構築に必要なファイルを配置しています。

docker-composeファイルの準備

以下のdocker-composeファイルを利用させていただきました。

GitHub - support-project/docker-knowledge: Docker file for knowledge
Docker file for knowledge. Contribute to support-project/docker-knowledge development by creating an account on GitHub.

git cloneで必要ファイルを取得します。

PS C:\Docker> git clone https://github.com/support-project/docker-knowledge.git
Cloning into 'docker-knowledge'...
remote: Enumerating objects: 325, done.
Receiving objects:  81% (264/325)ed 0 (delta 0), pack-reused 325 eceiving objects:  78% (254/325)
Receiving objects: 100% (325/325), 38.70 KiB | 250.00 KiB/s, done.
Resolving deltas: 100% (108/108), done.

knowledgeコンテナの構築

私のPC環境だとすでに8080ポートを別コンテナで割り当ててしまっているのでポートだけ8081に変更します。

version: '2'
services:
    app:
        image: koda/docker-knowledge
        #build: .
        volumes:
            - ./volumes/knowledge:/root/.knowledge
        ports:
            - "8081:8080"
        restart: always
        depends_on:
            - "db"
    db:
        image: postgres:9
        environment:
            - POSTGRES_USER=postgres
            - POSTGRES_PASSWORD=admin123
            - POSTGRES_DB=knowledge_production
        volumes:
            #- ./volumes/initdb:/docker-entrypoint-initdb.d
            - ./volumes/postgres/data:/var/lib/postgresql/data
        restart: always

修正したらそのままdocker-composeコマンドから構築します。イメージのダウンロードが始まってknowledgeのコンテナが構築されます。めちゃ簡単です。

PS C:\Docker> cd .\docker-knowledge\
PS C:\Docker\docker-knowledge> docker-compose up -d

コンテナが正常に起動していることを確認します。

PS C:\Docker\docker-knowledge> docker-compose ps
         Name                       Command               State           Ports
----------------------------------------------------------------------------------------
docker-knowledge_app_1   dumb-init /usr/local/tomca ...   Up      0.0.0.0:8081->8080/tcp
docker-knowledge_db_1    docker-entrypoint.sh postgres    Up      5432/tcp

もし以下のような感じでpostgressのコンテナが再起動を繰り返している場合にはdocker-compose.ymlに記載されているvolumeの以下の部分を修正して下さい。

PS C:\Docker\docker-knowledge> docker-compose ps
         Name                       Command                 State              Ports
---------------------------------------------------------------------------------------------
docker-knowledge_app_1   dumb-init /usr/local/tomca ...   Up           0.0.0.0:8081->8080/tcp
docker-knowledge_db_1    docker-entrypoint.sh postgres    Restarting

修正箇所

「./volumes/postgres/data:/var/lib/postgresql/data」
             ↓
「./volumes/postgres:/var/lib/postgresql」

これでKnowledgeは構築完了です。

Knowledgeへのログオン

さっそくknowledgeにアクセスしてみます。私の環境ではlocalhostの8081へアクセスしています。

ログオンしてみます。

ユーザ:admin、パスワード:admin123でログオンできます。

記事を作成する

ログオンできたら試しに記事を書いてみます。

Markdownが使えますので慣れれば記事を書くのも簡単ですね。

こんか感じで簡単に記事を書くことができました。

まとめ

今回はOSSでナレッジベースQiitaライクに構成することができる「Knowledge(ナレッジ) 」についてDockerコンテナで構築してみました。

通常のインストールだと結構手順が多くて大変みたいですが、コンテナであればサクッと簡単に構築できるので便利ですね。

この「Knowledge(ナレッジ) 」にはこの他にも、アクセス権の設定やアンケート機能やAD連携などの機能がありますので、別途紹介できればと思っています。

Dockerのオススメ勉強方法

私がオススメするDocker初心者向けの最初に購入すべき書籍は「さわって学ぶクラウドインフラ docker基礎からのコンテナ構築です。

さわって学ぶクラウドインフラ docker基礎からのコンテナ構築

本書ではDockerの基本的な概念などの座学ももちろんありますが、実際に、Dockerのインストール方法やWebサーバーをコンテナで構築するハンズオンを通じて学習することができるため、特に初心者の方はは分かりやすい内容となっています。

今回は以上となります。

コメント

タイトルとURLをコピーしました