matobaの備忘録

和歌山と東京を往復しつつ活動するエンジニアの記録

docker-composeの感触を確かめる

docker-composeってなんだろうな、と思ってた。複数のdockerを触るんだろうと思ってるけど、よくわかってない。今回は、docker-composeを触ってみて感じたことを書いておく。

docker-composeを触る

docker-composeを触って見るにあたって、いい感じのチュートリアルを探した。

公式のチュートリアルが秀逸すぎたので、他のチュートリアルをやる必要がないと思った。

興味のある人は、公式のチュートリアルをやってみよう。

Docker Compose — Docker-docs-ja 17.06.Beta ドキュメント

やったこと

公式のチュートリアルに以下の二つがあったので、やって見た。

  1. docker-composeを使って、flaskとredisを使うアプリを作る。
  2. docker-composeを使って、djangoとpostgresqlを使うアプリを作る。

それぞれ2つずつのホストが起動する。

公式チュートリアルをやった感想とメモ

とりあえず、公式チュートリアルがすごくわかりやすかった。 印象的なことを書く。

docker-composeはpip installできる

docker-composeってpip installできる様子。

公式にインストール手順でそのように書いてあった。

ということは、docker-composeはPythonで実装されているということ。

PyPIでいうとこれだ。

pypi.org

Githubでいうとこれ。

github.com

だからなんだという話ではなくて、「自分のよく使ってるPythonが使われてる!!!」みたいな意味だけです。Pythonだと、コードを楽に読めるから嬉しい。ついでに、tox.iniとかrequirementsを見て、以下のような感想をもちました。

思ったこと

開発環境を楽に作れる

redisにしてもpostgresqlにしても、とりあえず空っぽでいいから動かしたい。みたいな要求に答えるDockerのコンテナが用意されていて、それをとりあえずダウンロードして起動したら、redisとpostgresqlに接続できる。

みたいな状況になっていたので、驚きました。すごく開発環境を作るのが早そう。

接続するために必要なのは、公式で指定されているであろう、DBの情報とポートだけだと思う。

開発環境以外の利用用途が想像しにくい

本番環境でdocker-composeって使えるのかな、使う場面あるかな、と思ったけど、あんまり想像できなかった。

本番環境でDockerというのは、何と無くイメージができる。

コンテナを破棄したり起動したりを簡単にしたいときに使うんだと思う。 docker-composeはdockerを複数起動したいときに使うんだと思ってる。

本番で動かしてる時は、一つ一つ停止しできる方がいいような気がするんだけど、どうなんだろう?

deployのときに、まとめて決してまとめて展開する、みたいな使い方をするのかな。

ああ、そういう使い方ならイメージできるかも。

例えば、こんな感じになっていて、一つ一つのアプリが独立したプロセスになっているケース。

f:id:mtb_beta:20180928011121j:plain
想像

こんな状況だと、デプロイするときに、docker-composeを使えばまとめてdeployできる。 みたいなイメージ。

わからないけど。

実際、docker-composeってどういうシチュエーションで使われてるんだろう。

追記 

メモです。

docker-composeの環境起動

  • docker-compose updocker-compose.yml で定義した環境を起動します。
  • Dockerfileからdockerイメージを作り直して、コンテナを起動します。