このDockerイメージはオープンソースのWikiサーバーアプリCrowiをDocker上で使えるようにしたものです。
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
になっています。aws
やnone
を指定できます。
コンテナの/data
をボリュームとして登録してあります。中にはPASSWORD_SEED
を保存するconfig
ファイルとFILE_UPLOAD
がlocal
の時にアップロードされたファイルを保存するuploads
ディレクトリがあります。
このボリュームが失われるとPASSWORD_SEED
が失われることにより管理者を含めた既存ユーザーがCrowiにログインできなくなるので注意してください。
PASSWORD_SEED
環境変数を指定するか、docker run
時に-v crowidata:/data
などとしておくと次のときも同様に起動できるので良いと思います。