読者です 読者をやめる 読者になる 読者になる

カラクリサイクル

『輝かしい青春』なんて無かった人の雑記

docker-deployというリモートのDockerサーバ専用のdeployツール作りました

Development Diary

概要: DevOpsって自動化が超重要だよねー!


先日、

という記事にも書いた通り、僕の個人的なWeb Site or Serviceや、 あるいはIRC関係のデーモンなんかは、

で管理しているのですが、このリモートのDockerサーバでの、 Docker containerのbuildや、 Docker containerを起動するupstartファイルの配置なんかは、実は、

_人人人人人人_
> 全部手動 <
 ̄YYYYY

でやっておりました。

で、僕自身としてはDevOpsという文脈において、 手動でのOpsの管理は、絶対に信頼すべきでなく、 また必ず自動化するべきである、という考えを持っていて、 自動化必須だろボケカスとか自分に対して思ったので、 今回、

という、

  1. リモートでのDocker containerのビルド
  2. 及び、Docker container管理の自動化を行う設定ファイルの配置

を、全自動でやってくれるスクリプトを、 昨日まる一日かけて 書きました。

で、使い方としては、README.mdにも書いた通り、

$ curl -O https://raw.github.com/nyarla/docker-deploy/master/docker-deploy
$ chmod +x docker-deploy

した後、

# docker containerのビルド
$ docker-deploy --build --sudo \
    --user core \
    --host dev.sandbox.local \
    --tagprefix nyarla \
    /path/to/dockerfile/repository

# docker containerの自動起動化
$ docker-deploy --deploy --sudo \
    --user core \
    --host dev.sandbox.local \
    --tagprefix nyarla \
    --supervisor upstart \
    /path/to/dockerfile/repository

という感じで使えるのですが、いかんせんコマンド名長いし、 コマンドオプションも長いので、僕はコマンド一発実行ができるように、

USER = core
HOST = dev.sandbox.local
TAG  = nyarla

OPTS = --user $(USER) --host $(HOST) --tagprefix $(TAG)

SUPERVISOR = upstart

all: build deploy

build:
    docker-deploy --build --sudo $(OPTS)

deploy:
    docker-deploy --deploy --sudo --supervisor $(SUPERVISOR) $(OPTS)

という感じのMakefileを書いて、

# Docker containerのビルド
$ make build

# Docker containerのデプロイ
$ make deploy

という感じで、make一発でbuild && deployができるようにしています。

で、ちなみにこのスクリプト、皆に広く使ってもらいたかったし、 また、こういうDevOps界隈において、 これってかなり便利じゃね? みたいなスクリプトに、 ライセンスが云々するのもなんだか気乗りしなかったので、 とりあえずdocker-deployに関しては、

  • docker-deploy is under the public domain

としました。 僕としては、あとはもう本当に自由にいじり倒してください! という感じですね。

あとまあ細かいところのデキ加減とか微妙な感じな所もあるので、 もしここ直してーとか、あるいはここ直したよーとか有れば、

でIssue立てるとか、あるいはPull Request送るとかでお願いします。

ということで、今日の朝っぱらから書いている記事は以上です。 何か分からん事があったら、IRCとかLingrとかTwitterとかで、

  • @nyarla

まで話かけてもらえればと思います。

というわけで以上、終わります。