〇本番の実行環境
・OS : CentOS
・PHP : 7.~
・DB : postgreSQL
上記の実行環境をDockerで作りたいのですが、
調べてみるとDockerのコンテナはそれぞれが独立して
動くと知りました。ということは上記のCentOSとPHPとDBが
個別に動いていることになるので、CentOS上でPHPとDBが
動いているというわけではないということでしょうか?
それだと本番環境と違うような気がしたのですが・・・
やりたいこととしては本番の実行環境を
ローカルに用意したい、ということです。
CentOS上のhtdocsディレクトリに入れたプログラムが、
PHPとDBとして連携させて動かすことはできるのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
CentOS上で動作するPHPやPostgreSQLという考え方だとDockerは上手くいきません。
Dockerがなぜアプリケーション単位で物事を考えているかというと、
仮想マシン上で全て解決したいからです。
そもそもCentOSと一口にいってもその状態は千差万別です。
CentOSはマイナーバージョンが違うだけで各パッケージのバージョンがガラリと変わりますし、
CentOS6系と7系はそもそも一緒にするなと叱られる程に違います。(daemonさんとsystemdみたいなところとか)
そしてインストールCDだけで何種類あるんだよ!と突っ込みたくなるほどの種類がありますし、
データセンターで動作しているラックに入ったPCと、
エンジニア開発に使うデスクトップ(ノート)パソコンとはそもそもパーツが違いますので、動作するドライバ等も全く違う。
一つ一つは微々たるものでも、それが積み重なればかなり違いますので、
同じCentOS上で動作しているPHPやPostgreSQLでも容易に「僕の環境では再現しませんでした」問題が発生します。
これを解決するのが仮想マシンという考え方です。
例えばVirtualBOXという仮想マシンのソフトウェアがありますが、
ローカルでの開発が完了したら、
VirtualBOXのスナップショットを保存して本番環境にコピー、
そのスナップショットを元に本番環境でWebサービスを開始する…これならば前述の「僕の環境では再現しませんでした」問題の殆どを抑え込む事が可能です。
素晴らしい!さっそく上司に提案しにいかねば…!!
上司「アホか、VirtualBOXなんか本番環境で立ち上げたらオーバーヘッドデカすぎでリクエスト捌けないだろ!」
こんな感じでお叱りを受ける訳ですね。
Dockerは上司の懸念を払拭することに成功したツールです。
仮想マシンの恩恵を受けながらもオーバヘッドが殆どありません。
もし真にDockerを活かすならば、
本番環境のCentOSマシンにDockerをインストールし、
ローカルで作ったコンテナを持ってきて使う流れになります。
まぁ、それは理想論でネットワークやファイルIO周りでパフォーマンスが伸び悩んだり、
ログ出力周りでハマる事はあるようですが、暫く経てばこなれてきて落ち着くでしょう。
そうでないなら単なるエミュレートですね。
Dockerのコンテナは常に必要最小限のアプリが入った状態を前提として考えます。
デプロイ担当者はDockerfileやdocker-compose.ymlファイルを参考に、
CentOSにどのバージョンのPHPやPostgreSQLがインストールされているべきか、
その他ライブラリやモジュールはバージョンいくつで導入されていなければならないか…などなどを推測しながら構築することが出来ます。
まぁ、その辺になるとVagrantfile + VirtualBox + Ansibleの方が筋が良いでしょうね。
でもまぁ、最近はDocker for Macの挙動が中々良いんで、
私個人としてはもうVagrant + VirtualBoxの組み合わせはよほどの事がない限り使いたくないと思ってます。
投稿2018/03/23 04:39
総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/23 05:00
2018/03/23 06:06
退会済みユーザー
2018/03/23 06:20
0
CentOS上でPHPとDBが動いているというわけではないということでしょうか?
質問の意味が少しわかりにくいのですが、コンテナでは、CentOS上でPHPやDBが動作するかという質問であればYesです。
コンテナは独立した空間なので、コンテナ内に任意のOS(CentOSでも良いしUbuntuでも良いし)やミドルウェア、ライブラリ、環境変数といった内容をパッケージングできます。
PHPとDBとして連携させて動かすことはできるのでしょうか?
はい。上記の通りコンテナは独立しているので、WEBコンテナとDBコンテナを作ればそのようなことができます。
投稿2018/03/23 04:33
総合スコア4258
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/23 06:20
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。