dockerファイルからdockerイメージを生成し、ローカルPCにPHPの開発環境を構築します。
ベースイメージはCentOs7を使用し、apache2.4、php7.3をインストールします。
ローカルPCは Mac を使用します。
なお、以下が理解出来た後に、当項を読むことをお勧めします。
目次
前提と準備
dockerのインストール
dockerをインストールして下さい。
dockerが使用出来ることを前提としています。
作業ディレクトリ
作業ディレクトリはローカルPCの任意のディレクトリとします。
手順では以下を作業ディレクトリとして使用します。
適宜各自の環境に読み替えて手順を行って下さい。
1 |
mkdir -p /Users/dennie/Documents/30_docker/test |
共有ディレクトリ
webサーバのドキュメントルートとローカルPCの開発ディレクトリを共有する為、dockerコンテナとの共有ディレクトリを作成します。
このディレクトリにPHPのプロジェクトを作成します。
手順では以下を共有ディレクトリとして使用するので、ローカルPCに以下のディレクトリを作成します。
なお、適宜各自の環境に読み替えて手順を行って下さい。
1 |
mkdir -p /Users/dennie/Documents/30_docker/test/php_prj |
dockerfileの内容
dockerファイルの内容は以下を参照して下さい。
また、dockerファイルのファイル名は”dockerfile”とし以下へ配置します。
1 |
/Users/dennie/Documents/30_docker/test |
PHP起動確認ファイルの内容
webサーバ上でphpが実行することを確認する為、”index.php” という名前で確認ファイルを作成します。
内容は以下になります。
上記内容のファイルを 共有ディレクトリ へ配置します。
1 |
/Users/dennie/Documents/30_docker/test/php_prj |
手順
作業ディレクトリへ移動
作業ディレクトリへ移動します。
1 |
cd /Users/dennie/Documents/30_docker/test |
イメージの作成
buildコマンドを使用して、dockerfileからイメージを生成します。(※1)
以下は、カレントディレクトリに dockerfile が存在し、dockerイメージの名前を”centos_php″として、 buildコマンド を実行しています。
※1 ・・・ CentOs7で各パッケージをインストールする時にキーが必要で警告が出ますが、インストールは行えます。
1 |
docker build -t centos_php . |
コンテナの起動
作成したイメージからコンテナを起動します。
起動コマンドの説明は、以降で説明します。
mysqlなどをネットワークで連携しない場合は以下のコマンドを実行します。
1 |
docker run --name centos_php_container -d -p 3002:80 -v /Users/dennie/Documents/30_docker/test/php_prj:/var/www/html centos_php |
mysqlなどを連携する場合、ネットワークを指定します。
1 |
docker run --name centos_php_container --network lamp-network -d -p 3002:80 -v /Users/dennie/Documents/30_docker/test/php_prj:/var/www/html centos_php |
phpの確認
ローカルホストへhttpで接続し、webサーバ上でphpが動作することを確認して下さい。
1 |
http://localhost:3002 |
コンテナ起動コマンドの説明
今回指定した起動コマンドを説明します。
ネットワーク指定
mysqlなどを連携させる場合、参加させたいネットワークを指定します。
1 |
--network lamp-network |
ポート指定
dockerfile へ apacheのポート80 を開放するように記載したので、ホストOSからポート3002を使用するとゲストOSでポート80が使用されるように指定します。
1 |
-p 3002:80 |
共有ディレクトリ
ホストOSとゲストOSのディレクトリを共有し、共有したディレクトリをドキュメントルートとして使用します。
1 |
-v /Users/dennie/Documents/30_docker/test/php_prj:/var/www/html |
まとめ
次回はさらにmysqlのコンテナを同じネットワークに参加させて、LAMP環境を構築します。