Discourseとdockerに関する話題

Discourseはdocker上で動きます。
Discourseをインストールすると/var/discourseディレクトリの下に各ファイルが配置されます。その中に“launcher”コマンドがあり、これでDiscourse用に作成したdockerイメージのstartやstop、restartができるようになります。

launcherの引数で“enter”を選択すると、dockerイメージにログインすることができます。Discourceのdockerイメージがappだとすると、/var/dockerディレクトリで
./launcher enter app
を実行すると、appと言うdockerイメージにログイン出来ます。
dockerイメージはUbuntu的であり、apt-getコマンド等でパッケージをインストールすることができます。ホストOSとは独立していますので、dockerイメージ上のみで使うパッケージを独自にインストールして使うことができます。

3.3.0.beta1-devから3.3.0.beta3-devにアップデートするときに、コマンドラインで

# cd /var/discourse
# git pull
# ./laucher rebuild app

を実行しろと言われた。その際に“git pull”に失敗した。そのときのエラーメッセージに書かれたヒントが

-----------------------------------------------------------------------------------
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint:   git config pull.rebase false  # merge
hint:   git config pull.rebase true   # rebase
hint:   git config pull.ff only       # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
-----------------------------------------------------------------------------------

である。そこで

# git config pull.rebase false

を実行後に

# git pull

を再実行したところ、

-----------------------------------------------------------------------------------
error: Your local changes to the following files would be overwritten by merge:
        templates/web.template.yml
Please commit your changes or stash them before you merge.
------------------------------------------------------------------------------------

と表示された。確かに“templates/web.template.yml”は書き換えている。そこで

# git commit -m 'Merge the modified parts.' ./templates/web.template.yml

を実行してエラーが出ないことを確認後に

# git pull

を実行したところ、問題なく終了した。
最後に

# ./laucher rebuild app

を実行して無事3.3.0.beta3-devにアップデートした。