Docker-composeで手軽に自前のHackMDを立ち上げてみる


これは何?

私の技術メモです。

Dockerのコマンドとか調べてみたけど、いまいちピンと来ないので、
とりあえず何かサービスを立ち上げてみて楽しさとか利便性を感じてみたい。

やってみること

https://hackmd.io/
このサービスをDockerを使ってクラウドではなく自分のPCで立ち上げてみたい。
あまり細かいことは考えず、最低限で作業する。

HackMD
マークダウンでドキュメントを書き、共有や共同編集ができる。
この技術メモの目的とはそんなに関係無い。

クラウドでも利用できるが、GitHubにDocker-compose.ymlが上がってるので、それを使わせてもらえば自分の環境に建てたサーバで利用ができる。
https://github.com/hackmdio/codimd
ここからgit cloneしてDocker-composeを使ってみる。

Docker-compose
複数のコンテナを自動的に立ち上げてくれる。
今回目的とするHackMDはWebサーバとDBサーバが必要なので、Docker-composeを使えばWebサーバとDBサーバ用のコンテナが自動的に作られる。
Docker-compose.ymlというyaml形式の設定ファイルをもとに動く。

前提

PCのOSはWindows10です。
DockerホストはVagrantで立ち上げた仮想のubuntuとする。

やってみた

vagrantでubuntuを立ち上げる

今回の目的とそんなに関係無いので割愛。
とりあえずC:\vagrant\ubuntuvagrant upした想定とする。

Dockerをインストール

ここからはubuntuにssh接続でログインして作業。

sudo apt update
sudo apt install docker.io

インストールできたことを確認

docker --version
Docker version 18.06.1-ce, build e68fc7a

githubからclone

git clone https://github.com/hackmdio/docker-hackmd.git
cd docker-hackmd

Dockerをサービス起動

sudo service docker start

Docker-composeで一気にHackMDを起動

sudo docker-compose up
sudo: docker-compose: command not found

失敗。
docker-composeは別で入手する必要があるので、docker-composeもinstallしてから気を取り直してup!

sudo apt install docker-compose
sudo docker-compose up

docker-compose upがちゃんと動いたら、少し時間が掛かります。
listening at port 3000的なメッセージが出れば恐らく待ち受け状態になっている。
見てわかる通り、今回はWebサーバはポート3000で待ち受けている。

アクセスしてみよう

動いた!

適当にアカウントを作ってサインインすれば、当然使えます。

作ったアカウントは記録されるし、作成したドキュメントは消えないし、コンテナを削除したりubuntu自体を再起動しても、docker-compose upし直せばちゃんと残っている。

補足

大まかに、Docker-composeの中で

  • コンテナイメージの取得
  • コンテナの生成
  • コンテナの起動(ボリュームマウント含む)

をやってくれている。
Dockerホストであるubuntuの上に、瞬時にWebサーバとDBサーバ(postgre)を起動する。
DBサーバに書き込まれたアカウントやドキュメントなど、永続化する必要のあるものはローカルに保存されるようにマウントまでしてくれている。故にデータが消えない。すごい。