Dockerに入門しました。複数回に分けて備忘録として記載していきます。
本記事ではハンズオン/DockerでPHPの開発環境を構築した対応を記載します。
【ソースコードはこちら】
>> docker-php-only
【参考記事】
- 【Udemy】米シリコンバレーDevOps監修!超Docker完全入門(2022)【優しい図解説とハンズオンLab付き】
- 【Udemy】現役Webエンジニアが教えるPHP,MySQL,dockerを使用したフルスクラッチ開発
【関連記事】
- 【第1回】Dockerインストール→Linux(CentOS7)を起動
- 【第2回】Linuxの概要/GCPでUbuntuをインストール
- 【第3回】WEBサーバを構築(Nginx)/ネットワークの概要
- 【第4回】WEBアプリ構築/Dockerでの環境構築準備
- 【第5回】Dockerの概要
- 【第6回】Dockerのインストール・作成・起動・停止
- 【第7回】PHPの開発環境を構築(PHPとApacheのみ)
- 【第8回】PHPの開発環境を構築(docker-composeで複数コンテナを一括で起動)
- 【第9回】PHPの環境構築_その2_(環境構築自動化)
構築環境
PC | M1 MacBook |
Docker | ・事前にインストール ・【Docker公式】概要説明とセットアップ ・【簡易手順】Dockerのインストール |
ディレクトリとファイルの準備
PCの任意のDIRに以下の構成でディレクトリとファイルを作成
構成
docker-php-only
├── index.php # file Helloを記載
└── data # dir
└── info.php # file PHP INFOを記載
ファイルの内容
index.php
echo "Hello, PHP on Docker!";
info.php
php phpinfo();
PHPのイメージを取得
Macのターミナルで「docker-php-only」に移動し、以下のコマンドを実行していく
# イメージを取得
$ docker pull php:7.1.29-apache
# 確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php 7.1.29-apache 9873db935da3 3 years ago 329MB
PHPのコンテナを起動
# コンテナの起動
$ docker run -p 4000:80 -v ${PWD}:/var/www/html -d php:7.1.29-apache
コマンドの意味
- PHPとApache Webサーバーを含むDockerコンテナを起動し、ホストマシンのポート番号4000でアクセスできるようにする
- コンテナ内の /var/www/html ディレクトリを、ホストマシンの現在のディレクトリにマウントし、コンテナ内のWebサーバーにアクセスするために必要なファイルをホストマシンから提供することができる
コマンドの詳細
# docker run | Dockerコンテナを実行 |
-p 4000:80 | ・コンテナのポート番号80を、ホストマシンのポート番号4000にマッピング ・これにより、ホストマシンからコンテナ内のWebサーバーにアクセス可能になる ・ホストマシンのポート番号:4000は任意のポートでOK |
-v ${PWD} | ・コンテナの /var/www/html ディレクトリをホストマシンの現在のディレクトリにマウント ・これにより、ホストマシンからコンテナ内のファイルにアクセス可能になる |
-d | コンテナをバックグラウンドで実行 |
php:7.1.29-apache | ・使用するイメージの指定 ・この場合は、PHP 7.1.29 と Apache Webサーバーを含むDockerイメージを使用 |
動作確認
PHP INFOの確認
curlコマンドで確認
# PHP infoのHTMLが表示される
$ curl http://localhost:4000//data/info.php
ブラウザで確認
- ブラウザのURLに「http://localhost:4000//data/info.php」を入力
- 以下の画面表示になればOK
Helloの確認
curlコマンドで確認
# index.phpの内容が表示される事を確認
$ curl http://localhost:4000/index.php
echo "Hello, PHP on Docker!";
ブラウザで確認
- ブラウザのURLに「http://localhost:4000/index.php」を入力
- 以下の画面表示になればOK
エラー対応
エラーになった場合は以下を実施してみる
- タイポしていないか確認(URLのタイポ、コマンドのタイポ)
- ローカルマシンのポートを変えてみる(本記事であれば4000 → 4001とか)
- コンテナを一旦停止し、再度起動してみる
コンテナを停止
不要になったコンテナは一旦停止する
# docker psでCONTAINER IDを確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54c7623551fc php:7.1.29-apache "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 0.0.0.0:4000->80/tcp silly_germain
# docker stopでコンテナを停止
# docker stop <CONTAINER ID>
$ docker stop 54c7623551fc
# 複数指定も可能
# docker stop <CONTAINER ID 1> <CONTAINER ID 2> <CONTAINER ID 3>...
# 事後確認
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
以上で作業完了です。