Public | Automated Build

Last pushed: 23 days ago
Short Description
Crowi wiki on Docker
Full Description

Crowi on Docker

※ 現在Docker Cloudへ移行中です。

利用方法

既にMongoDBとRedisとElasticsearchのサーバーがある場合

$ git clone https://github.com/crowi/docker-crowi.git
$ cd docker-crowi
$ docker build -t crowi:1.6.2 .
$ docker run --name some-crowi -p 8080:3000 -d \
  -e MONGO_URI=mongodb://MONGODB_HOST:MONGODB_PORT/some-crowi \
  -e REDIS_URL=redis://REDIS_HOST:REDIS_PORT/some-crowi \
  -e ELASTICSEARCH_URI=http://ELASTICSEARCH_HOST:ELASTICSEARCH_PORT/some-crowi \
  crowi:1.6.2

と実行し、http://localhost:8080にアクセスすると使えるようになります。たぶん。

Docker Composeを使う

MongoDBのコンテナをdbとして、Redisのコンテナをredisとして、Elasticsearchのコンテナをesとしてリンクできるようにしてあるので、このリポジトリをcloneして以下のようにdocker-compose.ymlを書き、docker-compose upを実行すればhttp://localhost:8080にアクセスして使えるようになります。

# とりあえず全機能オンにして試しにローカルで使ってみる用の設定
version: '3'

services:
  crowi:
    build: .
    image: crowi:1.6.2
    environment:
      - MATHJAX=1
      - PLANTUML_URI=http://localhost:18080
    links:
      - mongo:db
      - redis:redis
      - elasticsearch:es
    ports:
      - 8080:3000

  mongo:
    image: mongo:latest

  redis:
    image: redis:alpine

  elasticsearch:
    # テスト用の設定
    # 正しい設定はElasticsearchのドキュメントを参照
    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.2
    environment:
      # パスワードの入力を省略するためX-Packを切る
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    # プラグインのKuromojiが必要
    entrypoint:
      - bash
      - -c
      - >-
        elasticsearch-plugin list | grep -q analysis-kuromoji
        || elasticsearch-plugin install analysis-kuromoji
        && exec $$0 $$@
    command:
      - /bin/bash
      - bin/es-docker

  plantuml:
    image: plantuml/plantuml-server:latest
    ports:
      - 18080:8080

コンテナのアップデートはdocker-compose pull && docker-compose upで。

環境変数

  • PORT: コンテナ側のポート。デフォルトは3000。普通弄る必要はありません。
  • MONGO_URI: MongoDBに接続するためのURI。dbコンテナをリンクする場合は必要ありません。
  • REDIS_URL: Redisのセッションストアに接続するためのURI。redisコンテナをリンクする場合は必要ありません。無くても一応起動できますが非推奨です。
  • ELASTICSEARCH_URI: Elasticsearchでページ検索できるようにするためのURI。esコンテナをリンクする場合は必要ありません。無い場合は検索機能が無効になります。プラグインのKuromojiが必要なことに注意してください。
  • PLANTUML_URI: PlantUMLを利用してUMLを書けるようにするためのURI。Crowiサーバーとは通信せず、ユーザーがPlantUMLサーバーにリクエストを送る形になるので、ユーザーからアクセスできるURIを指定してください。
  • MATHJAX: 1にしておくとMathJaxを利用してTeX記法で数式を書けるようになります(beta)。
  • PASSWORD_SEED: ユーザーのパスワードからハッシュを生成するときにつかう種です。指定しなくても自動生成します。これが変更されると既に登録しているユーザーがログインできなくなるので注意してください。
  • SECRET_TOKEN: 署名されたcookieを確認するための秘密鍵。
  • FILE_UPLOAD: デフォルトでlocalになっています。awsnoneを指定できます。

ボリューム

コンテナの/dataをボリュームとして登録してあります。中にはPASSWORD_SEEDを保存するconfigファイルとFILE_UPLOADlocalの時にアップロードされたファイルを保存するuploadsディレクトリがあります。

このボリュームが失われるとPASSWORD_SEEDが失われることにより管理者を含めた既存ユーザーがCrowiにログインできなくなるので注意してください。
PASSWORD_SEED環境変数を指定するか、docker run時に-v crowidata:/dataなどとしておくと次のときも同様に起動できるので良いと思います。

Docker Pull Command
Owner
bakudankun
Source Repository