gendosu流、dockerの使い方(Docker composeを使う)

dockerを開発環境で使うに当たって

前回「gendosu流、dockerの使い方」という内容を書きました。

その内容だと、

通常Dockerコンテナを手動で起動するには
まず、Dockerfileを作って自分好みにイメージを作成
作成したイメージからdocker runコマンドでコンテナ起動
たとえば、memcachedとmysqlとredisを使った一通りの構成を手動で起動しようとした場合
それぞれにイメージ作成やdocker run(start)をして起動していかないといけないです。
コンテナ間にリンクを張っている場合は起動順序も考慮する必要があります。

面倒ですね。

そこで、今回はDocker-composeを使ってみたいと思います。
こちらのツールはDockerのオフィシャルで配布されているツールになります。

簡単に言うと、複数コンテナの情報を1ファイルに集約して、そのファイルを元に
1コマンドで全コンテナを起動できるようにするツール

という事になると思います。

早速

インストール

Docker composeのインストールは

https://docs.docker.com/compose/install/

をみて作業を進めます。

これでdocker-composeというコマンドが入りました。

docker-composeを使うには
コマンドを実行するディレクトリ配下にdocker-compose.ymlというファイルを作成します。

※ディレクトリ構成

今回は前回の構成
webとmysql
という2つのコンテナを起動するような構成でファイルを作ってみたいと思います。

Dockerfile(supervisordのディレクトリも)は前回の物を流用します。

# Dockerfile

EXPOSEとCMDは、次のdocker-compose.ymlで設定するので、ここでは設定してません。

# docker-compose.yml

これで設定ファイルの準備が完了しました。

起動はdocker-composeにオプションを指定して実行します。

docker-composeのオプションで、代表的な物は

  • up
    コンテナをイメージから作り直して起動する
  • stop
    すでに起動しているコンテナを終了する
  • start
    停止しているコンテナを起動させる

あたりかと思います。

起動してみます。

upというオプションを指定して起動させました。

Dockerfileのビルドが走った後に

各イメージからコンテナが生成されて起動された事が確認できると思います。

あとは、前回同様、ポート2200を指定してsshすることでwebコンテナへログインする事が出来ます。