これは何?
私の技術メモです。
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\ubuntu
でvagrant 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サーバに書き込まれたアカウントやドキュメントなど、永続化する必要のあるものはローカルに保存されるようにマウントまでしてくれている。故にデータが消えない。すごい。