Docker-Composeのインストールとコンテナ連携

Dockerをインストールしたら、次はコンテナ連携ツールのDocker-Composeをインストールします。Docker公式マニュアルによるとコンテナは1つで1タスクが望ましいとのことなのでそれに従うとコンテナ連携は必須です。Dockerコマンドで同じことは実現できますが先人の方々によると効率が段違いとのことなのでDocker-Composeを最初から使用することにします。ここでは、Docker-ComposeのインストールとDocker-Composeを使用したNginxコンテナとphpコンテナの連携を扱います。

1.Docker-Composeのインストール

参考にしたのは公式サイトのインストールマニュアルです。

最新版のバージョンをGitHubの変更履歴から確認します。このリンクを開いて確認します。2017年3月5日時点では、「1.11.0」が最新のようです。下記のようにCurlコマンドで「1.11.0」を指定してインストールします。バージョンが上がったら「1.11.0」の部分を変更してください。

Docker-Composeに実行権限を付与します。

バージョンを確認します。

指定した最新のバージョンでインストールできました。

2.nginxとphpのコンテナ連携

Docker-Composeでnginxコンテナとphpコンテナを連携します。参考にさせて頂いたのはこちらの記事でほとんどそのまんまです。この方法はBuildイメージを作成してコンテナ連携をするようです。起動するコンテナはBuildイメージを作成した時点で設定等が固定されるので最初からコンテンツが固まっていて変更予定がない場合は有効な選択肢です。コンテナ作成後にコンテンツを育てていきたいのであればこちらの記事を参考にしてください。

(1)コンテナの設計

以下のフォルダ構成でディレクトリと設定ファイルを作成します。

(2)各設定ファイル内容

下層から上層への順に記述します。

・php7/Dockerfile

【DockerFile使用命令一覧】

命令 意味
FROM <イメージ>:<タグ> ベースイメージを指定します php:7-fpm
MAINTAINER <名前> 生成するイメージの Author (作者)フィールド gtrt7@
COPY <ソース>… <送信先> ソースファイルを送信先にコピーします index.php /var/www/html/

・php7/index.php

・nginx/Dockerfile

【DockerFile使用命令一覧差分】

命令 意味
ADD <ソース>… <送信先> ソースファイルを送信先にコピーします。ソースの変更があればキャッシュをクリアします。 server.conf /etc/nginx/conf.d/server.conf

・nginx/server.conf

テンプレートの設定ですが、特記点は「fastcgi_pass phpfpm_php7_1:9000;」の行です。後述する「docker-compose.yml」でnginxコンテナからphpコンテナをlinkしていますがlinkで使用するのはサービス名です。ネットワーク接続で使用するのはコンテナ名になります。従って、コンテナ名の命名ルールにより(後述)” phpfpm_php7_1”となります。ちょっと混乱しやすいのできちんと整理しておきましょう。

・docker-compose.yml

docker-composeで使用する「docker-compose.yml」という設定ファイルはyml形式をとります。PGソースのインデント形式でキーと値のセットを階層構造で表現できます。今回のymlファイルで使用しているキーと値を以下にまとめました。
【Docker-Compose YML形式キー値説明】

キー 意味 値の意味
version Docker-Compose.ymlのバージョン ‘2’ Version’2’形式をとります
services 以降にコンテナ記述をする nginx,php7… nginxとph7サービスを定義します
build コンテナをBuilしてから起動します .nginx,.php7 nginx,php7をBuilします
port ホストとコンテナ間のポートマッピングを指定します -80:80 nginxコンテナはホストの80ポートをコンテナの80ポートにフォワードします
link 連携するサービス名を指定します php7 nginxサービスはphp7サービスに連携(ネットワーク接続)します
(3)Docker-Composeの起動

Docker-Compose.ymlファイルのあるディレクトリに移動し以下のコマンドでコンテナを起動します。

(4)起動確認

・コンテナイメージの起動確認

起動されたコンテナは、「フォルダ名_サービス名_連番」のルールでコンテナ名が自動付与されます。

・ブラウザからの確認

nginxコンテナは80ポートをフォワードしているので外部ホストに接続すればコンテナのnginxに接続できるはずです。ホストのIPアドレスは「192.168.1.9」としてWebラウザで接続してみます。http://192.168.1.9/

Nginx→php7と連携しindex.phpに記述したphpinfo()の結果が表示されました。

Nginxコンテナとphpコンテナの連携は成功です。

スポンサーリンク
レクタングル大広告




レクタングル大広告




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
レクタングル大広告