プロになるためのPHPプログラミング入門 サンプル環境構築
書籍:プロになるためのPHPプログラミング入門
(ISBN:978-4-7741-4972-1)
この書籍のサンプルプログラムを動かすためのコンテナを作成する。
本来であれば新たに専用Dockerコンテナを作成するのが良しと思うが、
今回は「Docker:WSL+Docker+PHP+MySQL+phpMyAdmin環境の作成」で作成したコンテナに環境を作ろうと思う。
DocumentRootは/var/www/html(WSLの./www/html/にマウント)としているが、
compose.yamlに「Apache:エイリアスの設定」の設定を追加し、 サンプルプログラム(prophp_sample)を localhost/prophp_sample で公開するように対応する。
現在の環境
サンプルプログラムの環境
prophp_sample.confをコンテナにマウントし、Apacheの設定有効化と起動をcompose.yamlに追加する。
compose.yaml
あとは "docker copmose up -d" でコンテナを起動、 試しに "~/docker/php/prophp_sample/phpinfo.php" ファイルを作成、"localhost:8080/prophp_sample/phpinfo.php" でアクセスできればOK
(ISBN:978-4-7741-4972-1)
この書籍のサンプルプログラムを動かすためのコンテナを作成する。
本来であれば新たに専用Dockerコンテナを作成するのが良しと思うが、
今回は「Docker:WSL+Docker+PHP+MySQL+phpMyAdmin環境の作成」で作成したコンテナに環境を作ろうと思う。
DocumentRootは/var/www/html(WSLの./www/html/にマウント)としているが、
compose.yamlに「Apache:エイリアスの設定」の設定を追加し、 サンプルプログラム(prophp_sample)を localhost/prophp_sample で公開するように対応する。
現在の環境
現在の環境は、WSLの "~/docker/php"フォルダ にcompose.yamlなどDocker関連のファイル および
"~/docker/php/www/html"フォルダ にDocumentRoot をマウントしている。
"~/docker/php/www/html"フォルダ にDocumentRoot をマウントしている。
サンプルプログラムの環境
本付属サンプル "prophp_sample.zip" は解凍したのち WSLの "~/docker/php/prophp_sample" フォルダに配置した。
これをコンテナの "/var/www/prophp_sample" フォルダへマウントする。
compose.yaml
Apacheのエイリアス設定を行うための prophp_sample.conf ファイルをWSL上に作成する。
prophp_sample.conf
これをコンテナの "/var/www/prophp_sample" フォルダへマウントする。
compose.yaml
services:
php:
image: php:8.3-apache
volumes:
- ./www/html:/var/www/html
+ - ./prophp_sample:/var/www/prophp_sample
- ./php.ini-debug:/usr/local/etc/php/php.ini
:
Apacheのエイリアス設定を行うための prophp_sample.conf ファイルをWSL上に作成する。
prophp_sample.conf
Alias /prophp_sample /var/www/prophp_sample/www
<Directory /var/www/prophp_sample/www>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
prophp_sample.confをコンテナにマウントし、Apacheの設定有効化と起動をcompose.yamlに追加する。
compose.yaml
services:
php:
image: php:8.3-apache
volumes:
- ./www/html:/var/www/html
- ./prophp_sample:/var/www/prophp_sample
- ./php.ini-debug:/usr/local/etc/php/php.ini
+ - ./prophp_sample.conf:/etc/apache2/conf-available/prophp_sample.conf
ports:
- "8080:80"
+ command: >
+ sh -c "a2enconf prophp_sample && apache2-foreground"
:
あとは "docker copmose up -d" でコンテナを起動、 試しに "~/docker/php/prophp_sample/phpinfo.php" ファイルを作成、"localhost:8080/prophp_sample/phpinfo.php" でアクセスできればOK
参考(全体ソース)
compose.yaml
services:
php:
image: php:8.3-apache
volumes:
- ./www/html:/var/www/html
- ./prophp_sample:/var/www/prophp_sample
- ./php.ini-debug:/usr/local/etc/php/php.ini
- ./prophp_sample.conf:/etc/apache2/conf-available/prophp_sample.conf
ports:
- "8080:80"
command: >
sh -c "a2enconf prophp_sample && apache2-foreground"
db:
image: mysql:8.0
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8081:80"
environment:
PMA_HOST: db
"PHP 学習"