Public | Automated Build

Last pushed: 6 months ago
Short Description
Crowi wiki on Docker
Full Description

このDockerイメージはオープンソースのWikiサーバーアプリCrowiをDocker上で使えるようにしたものです。

サポートされるタグとそのDockerfile

利用方法

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

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 \
    bakudankun/crowi

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

Docker Composeを使う

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

version: '2'

services:
  crowi:
    image: bakudankun/crowi:latest
    links:
      - mongo:db
      - redis:redis
      - elasticsearch:es
    ports:
      - 8080:3000

  mongo:
    image: mongo

  redis:
    image: redis:alpine

  elasticsearch:
    image: elasticsearch:2
    # プラグインのKuromojiが必要
    entrypoint:
      - bash
      - -c
      - >-
        bin/plugin list | grep -q analysis-kuromoji
        || bin/plugin install analysis-kuromoji
        && exec /docker-entrypoint.sh $$0 $$@
    command: elasticsearch

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

環境変数

  • PORT: コンテナ側のポート。デフォルトは3000。普通弄る必要はありません。
  • MONGO_URI: MongoDBに接続するためのURI。dbコンテナをリンクする場合は必要ありません。
  • REDIS_URL: Redisのセッションストアに接続するためのURI。redisコンテナをリンクする場合は必要ありません。無くても一応起動できますが非推奨です。
  • ELASTICSEARCH_URI: Elasticsearchでページ検索できるようにするためのURI。esコンテナをリンクする場合は必要ありません。無い場合は検索機能が無効になります。プラグインのKuromojiが必要なことに注意してください。
  • 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 Compose からボリュームをマウントするには docker-compose.yml へ以下のように volumes の定義を追加します。

version: '2'

services:
  crowi:
    image: bakudankun/crowi:latest
    links:
      - mongo:db
      - redis:redis
      - elasticsearch:es
    ports:
      - 8080:3000
    volumes:
      - "crowidata:/data"

  mongo:
    image: mongo

  redis:
    image: redis:alpine

  elasticsearch:
    image: elasticsearch:2
    # プラグインのKuromojiが必要
    entrypoint:
      - bash
      - -c
      - >-
        bin/plugin list | grep -q analysis-kuromoji
        || bin/plugin install analysis-kuromoji
        && exec /docker-entrypoint.sh $$0 $$@
    command: elasticsearch
Docker Pull Command
Owner
sig9
Source Repository

Comments (0)