Qiitaライクのknowledgeをdocker-composeで楽々導入って記事をQiitaであげる暴挙


Qiitaいいよ。Qiita。

Qiitaで情報を貯めよう!ってお堅い会社で話をしても誰も理解してくれません。
そんな奴らは、テンプレートだけ立派なスカスカwordを、いつリンク切れが起きるか分からないファイルサーバーに貯めて恐怖に怯えろ!
・・・って心で思っても、何も解決しません。
まずは使ってみないとなかなか理解してもらえないもんです。
とはいっても使うかどうかわからないのにQiita:Teamを導入できるわけなく、最終的にQiitaライクのknowledgeにたどり着きました。
Markdownいいよ。Markdown。

knowledge構築

インストール

docker-composeを使用して一発で構築します。
下記のdocker-compose.ymlを使用しましょう。
https://github.com/support-project/docker-knowledge

ちょっとだけ変更して、koda/docker-knowledgeのタグにjapaneseを追加します。

version: '2'
services:
    app:
        image: koda/docker-knowledge:japanese
        #build: .
        volumes:
            - ./volumes/knowledge:/root/.knowledge
        ports:
            - 8080: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用にディレクトリを作成して、上記のyamlを配置します。
こんな感じ。

$ pwd
/○○○/docker-compose/knowledge
$ ls
docker-compose.yml

そして起動します。

$ docker-compose up -d

docker-composeの使い方は勉強してね。

起動後のカスタマイズ

起動したコンテナに入ります。

$ docker-compose exec app bash

/tomcat/webappsへ移動し、ROOT.warからknowledge.warをコピーします。リネームでもいいかも。

$ cp ROOT.war knowledge.war

なぜこんなメンドイことをしいるかというと、ルートディレクトリでのアクセスを避け、サブディレクトリ下に配置したい為なんです。
この後出てくるnginxの設定で全てが明かされます。
ROOT.warは消すか、移動させてください。

tomcatを /tomcat/bin/catalina.sh stopした後、/tomcat/bin/catalina.sh runし再起動させます。
stop、runの度にコンテナから抜けるので、再度コンテナに入りなおします。

これで準備OK。次は管理者でログインしてldap、postgresを設定します。

管理者でログイン

[ホスト名]:8080/knowledge/ へアクセスするとログイン画面が出てくるので下記情報でログインします。
オンプレ上でなければポート転送するか、nginxでリバースプロキシしてあげましょう。

  • id
    • admin
  • pass
    • admin123

ldapの設定

システム設定からldap設定を選択します。
ldapconfig2にADやldapの設定をしましょう。
これでldapユーザーでログイン出来るので記事をじゃんじゃん投稿しちゃいましょう。

データベースをPostgresへ変更

システム設定からデータベース接続先を選択します。
以下の設定をしましょう。docker-compose.ymlの内容と合わせます。

これでOK!

その他の設定

お好みで変更しましょう!

Nginx設定

Nginxを使用していない方は無視してください。
リバースプロキシでNginxを使用している場合は、以下の設定をしましょう。
この設定をするために、tomcatでサブディレクリに配置したわけです。

    location /knowledge {
        proxy_pass http://xx.xx.xx.xx:8080/knowledge;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_redirect http:// https://;
    }

ポイントはwebsocketを使っているから、こんな呪文を入れましょう。

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;

最後に

dockerを使うと非常に簡単に環境構築できますね。
環境を汚さないのもGoodです!

まずは自分で記事を貯めてから社内公開ですね。
それまでは頑張って投稿しまくります。
Qiitaと違って、オンラインエディタがちょっと非力なのが残念です。
しかし、コピペで画像を張れるのは非常に便利です。
スライドショーも出来るのでなかなかいいコンテンツが投稿できそうです!