#はじめに
ホスト側(ローカルマシン上)に作成した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」を押下します。
(2) 「Please Login To Download」を押下します。
##1-2. インストール
(1) Docker.dmgの実行
ダウンロードした「Docker.dmg」を実行して下さい。
(2) Applicationsに移動
DockerをApplicationsに移動させます。
(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に以下のように記載します。
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ファイルには以下を記載します。
<?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"が出力されていれば、成功です。
以上で、手順が完了です。