Slide 1

Slide 1 text

docker-composeを使って 開発とデプロイしてみた @_katomasa

Slide 2

Slide 2 text

自己紹介 @_katomasa かとまさ(@_katomasa) ● 元ソーシャルゲームエンジニア (現在、無職) ○ ADHD / ASD / うつ病 / 糖尿病 (NEW) の四重苦 ○ KIDDING KIDというグループ立ち上げる ● 興味分野: クラウド、仮想化、SRE、機械学習 ● 好きな技術: Python、Docker、kubernetes ● 好きな食べ物: 寿司、刺身、肉、サラダ ● 嫌いな食べ物: 火の通った魚、コーヒー、炭酸 ● Docker歴: 1年弱

Slide 3

Slide 3 text

アジェンダ ● 自己紹介 ● docker-compose使って開発してみた ● docker-composeで本番にデプロイしてみた ● まとめ

Slide 4

Slide 4 text

まえがき ● 今回行ったのは、個人でスキル確認のために作ったサービスなので、お仕事で運 用してるサービスとかでは真似しないでください ● Vagrant + Ansibleとかと比較したかったけど時間も知識もなかった ● 個人による感想なので、技術的な話は出てきません

Slide 5

Slide 5 text

docker-compose使って開発してみた docker-composeとは ● 複数のコンテナをまとめて管理する仕組み ● コンテナ周りの設定を宣言的に定義する ● シングルホストマシンで動く docker-compose up Host Web DB Network Volume ディレクトリ

Slide 6

Slide 6 text

docker-compose使って開発してみた どんな感じの構成か ● nginx ○ リバースプロキシ ○ volumeで静的ファイル群をマウント ● python ○ アプリケーション ○ volumeでアプリケーションコードをマウント ● mysql ○ データベース ● redis ○ キャッシュ ○ volume

Slide 7

Slide 7 text

docker-compose使って開発してみた どんなフローで開発したか コードを書く docker-compose restart 動作確認

Slide 8

Slide 8 text

docker-compose使って開発してみた 良かった点 ● 簡単に開発環境を構築できる ● volumeとかポートとか、各コンテナで必要な環境変数の設定をまとめて管理できる 点 ● コンテナ間ではサービス名をドメインにしてアクセスできるのでIPとか考慮しなくて 楽 ○ DBの中身をGUIクライアントで見たいときは `127.0.0.1`にexposeしたポートでアクセスすればよい ● 環境を破棄する時も`docker-compose down`コマンドでまとめて破棄できる

Slide 9

Slide 9 text

docker-compose使って開発してみた 不満だった点 ● コンテナの命名ちゃんとしないと、どのディレクトリか忘れる ○ もし消してた場合、手動でコンテナとかボリュームを消すことになる

Slide 10

Slide 10 text

docker-compose使って開発してみた まとめ ● 環境構築が簡単 ● 作った開発環境の管理、破棄も簡単

Slide 11

Slide 11 text

docker-composeで本番にデプロイしてみた どんな感じの構成か ● Google Compute Engine ○ 仮想マシン x 1 GCE Web DB Network Volume ディレクトリ

Slide 12

Slide 12 text

docker-composeで本番にデプロイしてみた 良かった点 ● GitとDockerとdocker-composeをインストールしただけで環境を立ち上げられた ○ ソースをcloneして、docker-compose upしただけ ● 開発環境と同じような感覚で本番環境も構築できた

Slide 13

Slide 13 text

docker-composeで本番にデプロイしてみた 不満だった点 ● 全コンテナが同じマシン上で動作する ○ マシンのリソースが共有されているため、どこかがリソースを食うと全部終わる ● docker-compose単体での冗長化は難しそう ○ 複数マシンで立ち上げてもまとめて管理できるわけではない ○ サービスごとで何個コンテナを立ち上げるとか指定できない

Slide 14

Slide 14 text

docker-composeで本番にデプロイしてみた まとめ ● シングルノードで動かす場合は開発環境と同じように構築できる ● 実際の運用でシングルノードで動かすことは......

Slide 15

Slide 15 text

まとめ ● 開発環境を共有するのに適している ○ 起動までの時間が早い ○ 手順が簡単 ● 開発環境で使うにはいいが、本番環境で使うには色々物足りない ○ 冗長性 ○ 耐障害性 ● 同じファイルで開発環境にも本番環境にも対応できるツール欲しい

Slide 16

Slide 16 text

ご清聴ありがとうございました