Qbilinux 日記

Linux に関係することだけではなく,最近は一般的なコンピュータやガジェット関係についても記載してます.

久しぶりに docker いじってみる(その3)

先日の docker の話の続き.

docker for mac 上で構築した web 開発環境を実際に使える形にアップデートしてみました.

先日は php + apache + mysql な感じででっちあげてたけど,なんか動作がおかしい.と思ったら,手元の稼働環境は mysql じゃなくて mariadb を使ってたんだっけ.そのせいで互換性のないところで動作がおかしくなっていたみたい.思い込みは恐ろしい.

ということで,環境整備.

php + apache + mariadb に変更して,ついでに ssl とか xdebug などを使える形に整備.あとは phpmyadmin とかも組み込んで見たり.

ふつうに検索すれば,上記のような構成での環境設定構築例は出てくると思うので詳細は省略します.

あんまり書かれてなさそうなことでちょっとはまったところだけ.

ssl 設定を有効にするために Dockerfile 中で

RUN a2enmod ssl

しただけじゃ動かなくって「どうして?」って思ったら,docker で使っていた php:7.1.11-apache にはダミーの証明書がデフォルトでは入ってなかったのね.ってことで

RUN apt-get install ssl-cert

が必要みたいです.あとは必要に応じて make-ssl-cert を実行してください.

一通り環境設定してから,ちょっとじっくり使い込んでみたけど,やっぱり印象としては以前と変わらない感じですね.

体感速度は Vagrant + VMware Fusion と同じくらい.

ただし,CPU とかメモリ負荷は docker の方が軽い.

マシンスペック的に余裕のあるマシンならどちらの環境でもいいのかなとは思いますが,手元の MacBook だと割と非力なので別のアプリを大量に動かすと Vagrant + VMware Fusion だとマシンリソースが足りなくなって来てだんだん厳しくなる感じ.一方,docker の方だと必要なマシンリソースが少ない分,大量にアプリを立ち上げても多少は余裕ある感じがしますね.

ということで,どっちがいいとは一概には言えないけど,開発環境としては本番環境に近い環境を構築しやすいものの方がいいのかなとは思います.単体マシンで運用して入るのなら Vagrant を使って,複数マシンで構成していたり,コンテナ環境で運用していたりするなら docker を使うとか.けど,非力なマシンで開発するなら本番環境のことはあまり考えずに docker の方が良いかもね.

あ,あとは費用ですかね.

Vagrant + VMware Fusion だと,VagrantVMware plugin とか VMware Fusion を購入したりするのに費用がかかりますが,docker の方は基本的に無料ですね.Windows 環境だと VMware Workstation が必要なのでさらに高額になりますね.Vagrant + VirtualBox だと無料ですけど,こっちだと動作速度が遅いです.

私自身は,今更 VirtualBox はあんまり使いたくないなと思っています.動作速度が VMware に比べて遅い上に,Vagrant との相性問題もちょくちょく発生しますからね.

以上,参考まで.

プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化
山田 祥寛
翔泳社
実践 Vagrant
Sky株式会社 玉川 竜司
オライリージャパン
DevOps導入指南 Infrastructure as Codeでチーム開発・サービス運用を効率化する
河村聖悟,北野太郎,中山貴尋,日下部貴章,株式会社リクルートテクノロジー
翔泳社