Docker2 Advent Calendar 2016の22日目及び
Fusic Advent Calendar 2016の22日目の記事です。
自己紹介
はじめまして、seike460と申します。
普段は主にPHPとサーバー触っています。
Docker良いですよねDocker。
少し前まで敬遠していたのですが、弊社のテックリードから布教されて使用してみたところ
思いのほか使いやすくてはDockerで開発するようになりました。
是非いろんな人にDockerを使って欲しいので今までの私が少しづつ進めてきた開発環境構築の軌跡と
現時点での、ぼくのかんがえるかっこいいDocker構成を書こうと思います。
Dockerを使う前
Vagrant + Ansible で開発を行っていました。
Ansibleに関しては、弊社のAnsible職人のリポジトリがキレイに整備されているので
ありがたやありがたやと使わせて貰ってたのですが、問題はVagrantが使うDisk容量です。
phpenvを使ってPHPを切り替えたりしても良いのですが、
PostgresのVersionが〜、MySQLのVersionが〜、といった感じできりがないです。
結局新しいVagrant作ったりしていました。


Dockerとりあえず使ってみる期
ひとまず使い方を教えてもらったので使ってみることにしました。
DockerにSSH開いてAnsibleで必要なサービスを突っ込んでました。とりあえず使ってみた状態です。

コレジャナイ感がすごかったのですぐやめました。
Dockerコマンドで頑張る期
なんとなく、自分で環境を作りたいと思ってcentosのコンテナイメージにAnsible流す方法を取っていたのですが
慣れてない分無駄に時間がかかっている気がしていました。
dockerhubのコンテナイメージ使えば、いい感じに連携出来そうと思って素直にそっちを使い始めました。
ここらへんからDocker使っている感出てきました。

ただ、毎回dockerコマンドを各ディレクトリに移って打つのがめんどくさくて気が狂いそうでした。
各コンテナの連携をもっとわかりやすく使いたいとも思ってました。
docker-composeでそれなりに幸せになる期
やはりあったオーケストレーションツール、docker-composeを使い始めてだいぶ幸せになりました。
基本ファイルである「docker-compose.yml」
独自設定が書ける「docker-compose.override.yml」
これらを駆使すれば、いい感じに開発出来る!と思いました。

ansibleも使いたい期
ただ本番でのDocker投入は怖いので、本番はどうしてもAnsibleを使用した環境構築を行いたい。
と次に考えるのは、やはりDockerとAnsibleの連携ですね。
docker-composeで作成したコンテナにAnsibleを実行します。
つなぎ込み部分に関しては既にDockerに対して実行できるよう
Ansible側が対応してくれています。ここを参照して下さい。
「connection: local」にて実行すれば、Dockerに接続出来ました。
(実際はここにたどり着くのにかなり苦しみ、いまだ試行錯誤中。Myベストプラクティスを見つけ次第アウトプットしたい)

Postgresql等のDBに関しては、追加パッケージの必要が無いのでdockerhubのものをそのまま使用しています。
ぼくのかんがえるかっこいいDocker
本番でdockerを使わない、開発docker環境も本番と同じ環境を整える事が出来る。
docker-compose - ansibleが現在私が考えている理想のDocker構成だと思っています。
これなら私が実現したい内容を全て包含してくれていると考えているからです。
皆様も自分の考える理想のDocker環境を構築して快適開発環境を是非手に入れましょう!