Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

 ホスト側(ローカルマシン上)に作成した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イメージとコンテナの削除方法

Ryooota
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした