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

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

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

no image

OSI参照モデル イーサネットとMACアドレス

OSI参照モデルのレイヤー1とレイヤー2で必要不可欠な規格がイーサネットです。 有線ネットワークであればほぼこの規格を採用していると思って間違いないでしょう。 MACアドレスでコンピューターを識別する …

no image

Dockerでのredis活用(redisinsightなどについて)

引き続きdockerネタですがredisを使ったネタに関して。 redis自体は以前のエントリーでも説明しましたが、一般的なキャッシュサーバーかと思います。 今回はredis自体の説明ではなくdock …

no image

Addtypeについて

htmlにはPHPを埋め込むことができますが、拡張子がhtmlの場合、そのままでは実行できません。 この場合、通常では拡張子を変えなければいけないところですが、apacheを使っている場合、設定ファイ …

no image

ansible rolesなど

ansibleはある程度ファイルが肥大化してくると、管理するのが大変になります。 一般的にはプログラムのようにある程度のまとまりにわけてそれを読み込むということになります。 ある程度のまとまりのことを …

アーカイブ