質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

2708閲覧

Dockerでのローカル開発環境の構築について(書籍など教えてください!)

_0rgma

総合スコア43

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

2クリップ

投稿2016/06/16 07:57

phpとMySQLを用いたWebアプリケーションの開発についてです。
チームでの開発で各個人のPC上にローカルでのテスト環境を構築したいのですが、
用いるPCがWindowsとMacとOSが混在しています。
VirtualBoxなどを使って仮想のLinuxマシンを作って
Ansibleなどで設定を共有すればいいかな、とぼんやり思っていたのですが
どうやらDockerを使うとそういうこともできるようなので理解を深めたいです。

検索して色々なサイトを見ていたのですが、どうもピンとこないので
自分の要求にあった書籍やサイトなどがありましたら教えていただきたいです。

最終目標は**「OSに関わらず、同様の設定が施されているローカルの開発環境を構築したい」**なので
「根本的にDockerではそういうことはできない」とか、「こういう方法のが楽だよ」とか
ありましたら是非お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

結論

「根本的にDockerではそういうことはできない」です。
短期的にはVagrant+VirtualBOXの習得がお勧めで、
長期的な目ではVagrant+VirtualBOX+Dockerや、docker-machine+VirtualBOXのどちらかが良いでしょう。


簡単にDockerを説明すると、
Linuxネイティブで動く超コンパクトなVirtualBoxみたいな奴です。
LinuxネイティブなんでWindowやMacOSでは動きません。

でもOSのキャッシュやらなんやらで超ハイテクな様々なライブラリを駆使しているので、
Apache専用仮想マシン、MySQL専用仮想マシンのように環境をバコバコ立ち上げても、
普通に1個のマシンにApacheとMySQLをインストールして動かしているようにしか見えない負荷とファイル容量で動きます。

これのメリットはデプロイ時によくあるローカルとはPHPのバージョンが違うとか、
ローカルと本番環境のphp.iniの中身が微妙に違うとかで、動きが変わって本番適用後に落ちる現象を極力下げる効果があります。


Dockerのβバージョンが現在WindowsとMacOSで出ています。
これの原理はVirtualBOXでLinux環境を立ち上げて、
WindowsとMacOSでDockerコマンドを打ち込むと、そのコマンド内容をそっくりLinux環境へ持って行って実行するというものです。
考え方は完全にdocker-machineと同じものです。

このDockerのβ版はHyper-V等の超高速なしくみを使った超高速Linuxを立ち上げるところにあり、
VirtualBOXとは一線を画する速度で動くので、Dockerのオーバーヘッドが少ないというメリットも享受できます。

ただし、まだβ版なので、Windowsはそもそも互換性が悪くちゃんと動かない論外、
MacOSは動く事は動くが定期的にCPU使用率が100%超えるという感じなので、
生暖かい目で見守ってあげましょう。


質問者さんの要件ならばまずVagrantを覚えると良いでしょう。
VirtualBOXやVMWare等、CLIで使う場合コマンドが違って大変じゃないですか?
デプロイする時にAWSとか、Azureとかありますが、それもサービスによって全部コマンドが違う・・・・

そういう仮想環境を立ち上げる時に全て同じコマンドでやってしまおうというプロジェクトがVagrantです。

BOXという概念でスタート時点のLinuxマシン+初期設定のプロビジョンを自動的に適用する機能もありますので、
誰がどう起動しても、設定ファイルが同じならば同じ環境が立ち上がるという事が実現出来ます。

Dockerは更に次の次元、ApacheやMySQL等のアプリケーション単体に絞って仮想化してしまおうというものなので、
短期的には目的とは違いますので勉強に時間がかかります。
しかし、次世代のサーバーはこれで動くだろうということで、勉強しておいたほうが良いかと思います。

早足でざっくり書きましたので誤字脱字あるかもしれません。
分からない事があればコメントにでも書いてください。

投稿2016/06/16 08:50

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_0rgma

2016/06/16 09:13

丁寧な回答、ありがとうございます! Vagrantがまた分からないので、検索するところから始めたいと思います。 回答後に補足で申し訳ないのですが、こちらのスライドを見て「Dockerっていうのが使えるのかなー?」などと思ってしまいました。 http://www.slideshare.net/YuukiKanazawa/docker-60326987 Dockerとdocker-machineって異なるものなんでしょうか?
miyabi-sun

2016/06/16 09:20

スライドみました。 beforeのVagrantで頑張ってた時代がありますよね。 それがDockerに目覚める条件です、頑張ってください。 docker-machineってのは、Docker便利だWindowsやMacOSでも使いたいね。 でもDockerはLinux専用…困った。 じゃあVirtualBOXでLinuxのマシンを立ち上げて、ホスト側でDockerコマンドを打ち込んだら、こっそりVirtualBOXのLinuxマシン内でそのコマンドが実行されているのが理想じゃないですか? その理想をdocker-machineをインストールするだけで実現しますよってのがdocker-machineです。 ただし、プロジェクトの設定ファイルのやりとりや、Dockerの勉強コストを考えると 1.VagrantでVirtualBOXのLinuxマシンを操る 2.Vagrant+Ansibleで環境構築を極める 3.Vagrant+VirtualBOX+Dockerへの移行 4.横着してDockerMachineへ移行 ・・・・という段階を踏むと良いでしょう。 勉強はドットインストールが導入としては楽かと思います。
_0rgma

2016/06/16 09:40

WindowsやMacで仮想のLinux環境を作った際に、その環境でDockerを使用するのに必要なものがdocker-machine・・・という解釈で間違っていないでしょうか? Docker自体が新しめの技術なので導入コストを考えるとVergrantから始めるのが妥当なんですね。ドットインストールの講座見てみます! わかりやすい説明でとても助かりました!ありがとうございます。
miyabi-sun

2016/06/16 10:19

WindowsやMacOSではDockerが使えませんが、 docker-machineで擬似的なDockerが使えますよ。 (内部的な実装はVirtualBOXとコマンドの受け渡しをしてくれる便利ツール) この場合はdocker-machineが勝手にVirtualBOXやらLinux環境のハンドリングをやってくれるので、WindowsやMacで何も考えずにDockerのコマンドを発行するだけで済みます。 どちらも勉強する価値が十分あると思いますので、楽しみながらすぐ慣れると思います。 開発頑張ってください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問