skillup

技術ブログ

サーバー・ネットワーク

dockerコンテナ間での連携(PHP+MySQL)

投稿日:

dockerでのコンテナ間の連携について

以前、dockerではCentOSのイメージからコンテナを作成し、その中にphp,apache,mysqlをインストールしてましたが、dockerの使い方としてはアプリとDB側で別々にコンテナを作成するのが一般的なようです。

以前勉強したリンク

docker上でミニサービスを起動させるまで

元々の意図としては環境を平易に作成できるのがメリットなのと前者のような感じだとphpのバージョンをあげたり、mysqlのバージョンを上げる時に1つのイメージに対する依存度が上がり、vagrantを使うのと変わらないなあと思ってしまいます。(それでもvagrantよりは軽いのでいいと思いますが・・・)

今回ですが、下記の状態で作成しました。

  • php5.6+apache
  • mysql5.7

php5.6+apacheのDockerfile

mysqlのDockerfile(下記ぐらいの内容だったら普通にpullすればいいかも・・・・)

それぞれをビルドしてイメージを作った後、コンテナを立ち上げる時に下記のようなコマンドを打ちます。

phpと連携する場合、mysql側のコンテナを先に立ち上げておく必要があります。

またmysqlのコンテナを作成する場合は初期時にrootのパスワードがないと起動しないようですので、上記のようにコンテナ起動時に変数を渡す必要があります。

次にphp側のコンテナ起動ですが、下記のようになります。

–linkですがこれが連携のオプションのようです。(mysql:mysqlはエイリアス?のようです)

連携が成功しているかどうかですがphp5.6側のコンテナに入って、/etc/hostsファイルを確認し、mysql側が名前解決されているかどうかを確認すればOKです。

参考リンク

Docker Hubのオフィシャルイメージを使ったLAMP環境(Apache+PHP+MySQL)構築

-サーバー・ネットワーク
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

インメモリデータベース redis

インメモリデータベースのredis(レディース)について。 キャッシュとして以前はmemcachedを使っていましたが、いろいろ多機能ということでredisをちょっと触ってみようかと。 Content …

no image

jenkinsのオートデプロイ

久々にJavaやりました。 Contents1 やりたいこと2 ハマりポイント2.1 Antでのjobの設定2.2 jenkinsでビルドできない2.3 jenkinsのオートデプロイ2.4 SSHで …

no image

webサーバーがどのように動いているか(GETとPOST)

webがリクエストを受け取って画面に表示するまでの流れをおさらい。基本です。 Contents1 全体の流れ2 参考文献 全体の流れ 1 ユーザーがブラウザのURL欄に[crayon-60d23606 …

no image

IPアドレスの構成に関して(主にネットワーク、ホスト、サブネットマスクなど)

インフラ周りの知識がスカスカなので復習もかねて学習中です。 ネットワークはほとんどインフラの方にやっていただいたので、知識がまとまっていない・・ Contents1 IPアドレスに関して2 ネットワー …

no image

シェルの基礎+ユーザー切り替え関連

雑誌を見ていたらシェルの特集があったので、ちょっとメモリます。 補強したいところのみ要点をチェック。 Contents0.1 実行パスについて0.2 ビルドインコマンド0.3 シェル変数・環境変数0. …