PHP
Mac
Apache
docker
dockerformac

Dockerの開発環境構築 (Mac + Docker + PHP + Apache)


はじめに

 ホスト側(ローカルマシン上)に作成したWebページを

 Dockerコンテナを通して、ブラウザに出力("Hello Docker")するまでの手順を記載します。

 ※ シンプルな手順としたい為、PHP+Apacheを選択しました。

 ※ マシンのOSのバージョンは、macOS High Sierra 10.13.4です。


前提条件

 Docker for Macをダウンロードする際、Dockerの公式サイトにログインする必要があります。

 Dockerの公式サイトにログインするためのユーザを作成して下さい。


1. Docker for Mac


1-1. ダウンロード

 以下のサイトからダウンロードします。

 https://docs.docker.com/docker-for-mac/install/

 (1) 「Download from Docker Store」を押下します。

  install01.png

 (2) 「Please Login To Download」を押下します。

  install02.png

 (3) 「Get Docker」を押下します。

  install03.png


1-2. インストール

 (1) Docker.dmgの実行

  ダウンロードした「Docker.dmg」を実行して下さい。

 (2) Applicationsに移動

  DockerをApplicationsに移動させます。

  install3.png

 (3) Dockerの実行


1-3. 確認

 ターミナルを開き、「docker version」を実行します。

 以下のように出力されていれば、インストールは成功です。 

$ docker version

Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:13:02 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:22:38 2018
OS/Arch: linux/amd64
Experimental: true


2. Dockerイメージのビルド


2-1. Dockerfileの作成

 Dockerイメージをビルドするためには、Dockerfileが必要です。

 任意のディレクトリを作成し、そのディレクトリ配下に Dockerfileを作成します。

 以下の例では、「php_apache」ディレクトリの配下に Dockerfileを作成しています。

$ mkdir php_apache

$ cd php_apache/
$ touch Dockerfile


2-2. Dockerfileの設定

 公式のイメージを利用するため、Dockerfileに以下のように記載します。


Dockerfile

FROM php:7.2.7-apache


 FROMには、ベースとなるイメージとタグを指定します。

 この例では、公式のイメージ「PHP」のタグ「7.2.7-apache」を指定しています。

 ※ 「7.2.7-apache」には、PHP7.2.7とApacheが1つのコンテナに含まれています。

 ※ 以下のサイトがPHPの公式リポジトリです。

  利用可能なタグの確認が行えます。

  https://hub.docker.com/_/php/


2-3. ビルド

 ターミナルで、「docker build {Dockerfileのパス} -t {ビルドするイメージにつけるリポジトリ名:タグ名}」を実行します。

 ここでは、「docker build ./ -t php_apache_image:ver001」を実行しました。 

 以下のように出力されていれば、成功です。

$ docker build ./ -t php_apache_image:ver001

Sending build context to Docker daemon 2.048kB
Step 1/1 : FROM php:7.2.7-apache
7.2.7-apache: Pulling from library/php
683abbb4ea60: Pull complete
5ba6c1ec1bb7: Pull complete
30c400495d2e: Pull complete
47082fd94ae9: Pull complete
db1399ce8b37: Pull complete
d9055cd97604: Pull complete
3dc42f043a06: Pull complete
718b9cd7325a: Pull complete
a7b97ac10aed: Pull complete
24e62ac9193c: Pull complete
ab519c71ddf5: Pull complete
4bb2eea5ed3b: Pull complete
839db073d17d: Pull complete
694b4d33596a: Pull complete
91d76bc9d54f: Pull complete
Digest: sha256:868995dfcc485ee259b5102ccb7e56c9ead60677450fe755d5ad3d338395f632
Status: Downloaded newer image for php:7.2.7-apache
---> c2700d1900ac
Successfully built c2700d1900ac
Successfully tagged php_apache_image:ver001

 ※ タグ名を省略した場合は、「latest」というタグ名が付きます。


2-4. 確認

 ターミナルで、「docker images」を実行します。

$ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
php 7.2.7-apache c2700d1900ac 6 days ago 377MB
php_apache_image ver001 c2700d1900ac 6 days ago 377MB


3. Webページの作成

 ホスト側(ローカルマシン上)に"Hello Docker"を出力するためのPHPファイルを作成します。

$ mkdir html

$ cd html
$ touch index.php

 ※ Dockerコンテナ内のファイルは永続化されません。

  ホスト側のディレクトリをコンテナ側にマウントすることで、データの永続化が可能となります。

  ここでは、Dockerfileと同じディレクトリにマウント用のディレクトリ(html)を作成し、

  その配下にPHPファイルを作成しました。

 PHPファイルには以下を記載します。


index.php

<?php echo 'Hello Docker'; ?>



4. コンテナの起動


4-1. 起動

 ターミナルで、「docker run」を実行します。

 ここでは、以下のようにコマンドを実行しました。 

 docker run -d -p 80:80 -v /Users/Sample/Docker/php_apache/html:/var/www/html --name php_apache_container php_apache_image:ver001

-d:バックグラウンドで実行するオプション

-p:ホスト側のポート:コンテナ側のポートを指定
-v:マウントしたいディレクトリを ホスト側のパス:ゲスト側のパス で指定
--name:コンテナの名前を指定(名前を指定していないと自動的に付けられる)
* コンテナの元となるイメージphp_apache_image:ver001を指定

 以下のように出力されていれば、成功です。

$ docker run -d -p 80:80 -v /Users/Sample/Docker/php_apache/html:/var/www/html --name php_apache_container php_apache_image:ver001

e9dd2b376a48b5f49f67467423fb01cf1e833f5ab4cd0bf723820403c18098c3


4-2. 確認

 ターミナルで、「docker ps -a」を実行します。

 php_apache_containerが起動(STATUSが"up")していることが確認できます。

$ docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e9dd2b376a48 php_apache_image:ver001 "docker-php-entrypoi…" 13 minutes ago Up 13 minutes 0.0.0.0:80->80/tcp php_apache_container


5. Webページの確認

 ブラウザで「localhost/index.php」もしくは、「localhost/」を実行して下さい。

 "Hello Docker"が出力されていれば、成功です。

以上で、手順が完了です。


参考元

DockerをMacにインストールする

Dockerイメージとコンテナの削除方法