自宅でもphpについて学びたいと思い、ローカルで開発環境を構築しようと思いました。
MAMPでもいいと思いましたが、せっかくなのでdockerで作ってみたいと思います。
開発中に色々詰まってしまったので備忘録がてらの記述です。
手順
1:dockerによる開発環境構築
2:ファイルディレクトリの準備
3:各ファイルの作成
4:コンテナ起動
5:サイトにアクセス
1:dockerによる開発環境構築
Dockerを使用するには「docker for mac」が必要なんですが、導入方法などはすでにQiitaなどで分かりやすく書かれてる方々がたくさんいますので、今回は割愛させていただきます。
今回はDockerで以下のコンテナを使います。
・nginx
・PHP
・MySQL
・PHPMyAdmin
使用するコンテナが複数あるため今回は「docker compose」を使用していきたいと思います。
2:ファイルディレクトリの準備
まずはDockerを起動するための場所を作成します。
ファイル構造は次のようにします。
php-test
├── docker-compose.yml
├── mysql
│ └── data
├── nginx
│ └── nginx.conf
├── php
│ ├── Dockerfile
│ └── php.ini
└── www
└── html
└── index.php
3:各ファイルの作成
下記のファイルを編集して中身を作成していきます。
FROM php:7.2-fpm
COPY php.ini /usr/local/etc/php/
RUN docker-php-ext-install pdo_mysql
server {
listen 80;
server_name _;
root /var/www/html;
index index.php index.html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
version: '3'
services:
nginx:
image: nginx:latest
ports:
- 8080:80
volumes:
- ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf
- ./www/html:/var/www/html
depends_on:
- php
php:
build: ./php
volumes:
- ./www/html:/var/www/html
depends_on:
- db
db:
image: mysql:5.7
ports:
- 13306:3306
volumes:
- ./mysql/data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
ports:
- 8888:80
depends_on:
- db
<?php
phpinfo();
?>
4:コンテナ起動
ここまでの作業が終わりましたら、ターミナルからdocker-compose.yml
ファいうがあるディレクトリ移動してdocker-compose up -d
コマンドでコンテナ起動できます。
コンテナを停止したい場合はdocker-compose stop
コマンドで停止できます。
5:サイトにアクセス
最後にサイトにアクセスしてみてちゃんと表示されてたら起動完了です。
Webサイト:http://localhost:8080/
お疲れ様でした。