Public | Automated Build

Last pushed: 5 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 \
    aruneko/docker-crowi

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

Docker Composeを使う

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

version: '3'

services:
  crowi:
    image: aruneko/docker-crowi:latest
    links:
      - mongo:db
      - redis:redis
      - elasticsearch:es
    ports:
      - 3000:3000
    environment:
      - MATHJAX=1
    volumes:
      - crowi_data:/data

  mongo:
    image: mongo
    volumes:
      - mongo_configdb:/data/configdb
      - mongo_db:/data/db

  redis:
    image: redis:alpine
    volumes:
      - redis_data:/data

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

volumes:
  crowi_data:
  mongo_configdb:
  mongo_db:
  redis_data:
  es_data:
  es_config:

コンテナのアップデートは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を指定できます。
  • MATHJAX: 1に設定するとMathJaxが利用できます。

ボリューム

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

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

Docker Pull Command
Owner
aruneko
Source Repository