/docker-crowi

Crowi wiki on Docker

Primary LanguageShellMIT LicenseMIT

Crowi

この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:9200/some-crowi \
	bakudankun/crowi

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

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

version: '2'

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

  mongo:
    image: mongo

  redis:
    image: redis:alpine

  elasticsearch:
    image: bakudankun/elasticsearch-crowi

CrowiでElasticsearchするにはプラグインのKuromojiが必要なので、Kuromojiをインストールした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などとしておくと次のときも同様に起動できるので良いと思います。