Docker
Ansible
docker-compose
Docker2Day 22

ぼくのかんがえるかっこいいDocker

More than 1 year has passed since last update.

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作ったりしていました。

1.png

1.png


Dockerとりあえず使ってみる期

ひとまず使い方を教えてもらったので使ってみることにしました。

DockerにSSH開いてAnsibleで必要なサービスを突っ込んでました。とりあえず使ってみた状態です。

2.png

コレジャナイ感がすごかったのですぐやめました。


Dockerコマンドで頑張る期

なんとなく、自分で環境を作りたいと思ってcentosのコンテナイメージにAnsible流す方法を取っていたのですが

慣れてない分無駄に時間がかかっている気がしていました。

dockerhubのコンテナイメージ使えば、いい感じに連携出来そうと思って素直にそっちを使い始めました。

ここらへんからDocker使っている間出てきました。

3.png

ただ、毎回dockerコマンドを各ディレクトリに移って打つのがめんどくさくて気が狂いそうでした。

各コンテナの連携をもっとわかりやすく使いたいとも思ってました。


docker-composeでそれなりに幸せになる期

やはりあったオーケストレーションツール、docker-composeを使い始めてだいぶ幸せになりました。

基本ファイルである「docker-compose.yml」

独自設定が書ける「docker-compose.override.yml」

これらを駆使すれば、いい感じに開発出来る!と思いました。

4.png


ansibleも使いたい期

ただ本番でのDocker投入は怖いので、本番はどうしてもAnsibleを使用した環境構築を行いたい。

と次に考えるのは、やはりDockerとAnsibleの連携ですね。

docker-composeで作成したコンテナにAnsibleを実行します。

つなぎ込み部分に関しては既にDockerに対して実行できるよう

Ansible側が対応してくれています。ここを参照して下さい。

「connection: local」にて実行すれば、Dockerに接続出来ました。

(実際はここにたどり着くのにかなり苦しみ、いまだ試行錯誤中。Myベストプラクティスを見つけ次第アウトプットしたい)

5.png

Postgresql等のDBに関しては、追加パッケージの必要が無いのでdockerhubのものをそのまま使用しています。


ぼくのかんがえるかっこいいDocker

本番でdockerを使わない、開発docker環境も本番と同じ環境を整える事が出来る。

docker-compose - ansibleが現在私が考えている理想のDocker構成だと思っています。

これなら私が実現したい内容を全て包含してくれていると考えているからです。

皆様も自分の考える理想のDocker環境を構築して快適開発環境を是非手に入れましょう!