M1チップ搭載のMacを使ってPHP開発環境をDockerで構築してみたいと思います。
やりたいこと
・ CentOS7のイメージからコンテナ作成
・ Apache + PHPのWeb環境
・ Macのローカルフォルダと、Dockerコンテナのフォルダ共有
・ SSL通信ができること(httpsでアクセスできる)
Docker インストール
まずは「Docker Desktop for Mac」をインストールします。
こちらのページの「Mac with Apple Chip」からダウンロードできます。
https://docs.docker.com/docker-for-mac/install/
Rosetta 2も必要になるので、手順を参考にしてインストールしてください。
MacとDockerの共有フォルダ作成
Macのターミナルを起動して、Dockerコンテナと共有するフォルダを作ります。ACCOUNT_NAMEはご自身のMacアカウントと置き換えてください。
# Mac
mkdir /Users/ACCOUNT_NAME/webroot
Docker コンテナ作成
CeontOS 7のイメージからコンテナを作成します。ACCOUNT_NAMEはご自身のMacアカウントと置き換えてください。
# Mac
docker run --privileged -it -p 80:80 -p 443:443 -v "/Users/ACCOUNT_NAME/webroot:/var/www/html" --name webserver centos:centos7 /sbin/init
起動の途中で下のエラーが出ますが、起動には影響ないので無視します。
[ TIME ] Timed out waiting for device dev-ttyAMA0.device.
[DEPEND] Dependency failed for Serial Getty on ttyAMA0.
CentOS 時刻設定
「Docker Desktop for Mac」からコンテナのCLIボタンを押して、CentOSのコンソールを立ち上げます。
時刻を設定します。
# CentOS
timedatectl set-timezone Asia/Tokyo
Apache インストール
Apacheをインストールします。
# CentOS
yum install -y httpd
Apacheを起動します。
# CentOS
systemctl start httpd
Macのブラウザからアクセスして、Apacheの画面が表示されればOKです。
http://localhost/
PHP インストール
PHPをインストールします。標準では5.4のバージョンがインストールされるので、必要であれば他のバージョンをインストールします。
# CentOS
yum install -y php
インストール後はApacheを再起動します。
# CentOS
systemctl restart httpd
Macで作った共有フォルダにPHPの動作確認用ファイルを作成します。ACCOUNT_NAMEはご自身のMacアカウントと置き換えてください。
# Mac
vi /Users/ACCOUNT_NAME/webroot/info.php
下記の内容を入力して保存します。
<?php
phpinfo();
?>
PHPの動作確認用ファイルにアクセスします。
http://localhost/info.php
PHPの設定が表示されればOKです。
SSL設定
httpsでアクセスできるようにcertbotをインストールします。インストールするだけで自己署名証明書が設定されます。
# CentOS
yum install -y epel-release
yum install -y certbot
yum install -y certbot-apache
インストール後はApacheを再起動します。
# CentOS
systemctl restart httpd
MacのSafariからhttpsでアクセスします。Chromeではキーチェーンの設定をしないとページが見れないので、Safariからアクセスします。
https://localhost/
警告が表示されますので「このWebサイトを閲覧」から証明書を許可します。
ページが表示されればOKです。
補足
コンテナ起動時にApacheを自動起動する
# CentOS
systemctl enable httpd
Apacheの設定ファイルの場所
# CentOS
vi /etc/httpd/conf/httpd.conf
PHPの設定ファイルの場所
# CentOS
vi /etc/php.ini
最後に
最小限ですがPHPの開発環境を構築できました。あとはDBをインストールなど色々とカスタマイズしていきたいと思います。