[PHP]DockerでPHP, MySQL(MariaDB), nginxを使ったローカル開発環境を構築する

Pocket

nginx/nginx.conf

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;
    }
}

nginx の設定は上記のようになっています。ドキュメントルートは /var/www/html としています。今回 php-fpm を使用するので FastCGI の設定も書き足してあります。

php/Dockerfile

FROM php:7.2-fpm
COPY php.ini /usr/local/etc/php/

PHP の項目にある「build: フォルダ名」となっている箇所はDocker Hub に登録されている image を指定する代わりに自分で用意したものを利用する場合の指定方法です。この場合、そのフォルダに設置された Dockerfile の内容をもとにイメージがビルドされます。

完全にゼロから用意してもいいのですが FROM を使って土台となる image を指定すると、カスタマイズ内容を付け加えることができます。ここでは php:7.2-fpm の導入が完了したら、用意した php.ini ファイルを /usr/local/etc/php にコピーする処理を付け足してあります。

php.ini

date.timezone = "Asia/Tokyo"

php.ini の内容はひとまずこの1行だけですが必要に応じて書き換えたい項目を追加して下さい。

www/html/index.php

<?php
phpinfo();

見本のための php ファイルです。内容は何でもいいですが設定情報を確認できるようにしました。

コンテナーの起動

ファイルをすべて用意できたら docker-compose を使ってコンテナーを起動します。ターミナル(コマンドプロンプト)を開き、cd コマンドで docker-compose.yml のあるフォルダに移動後、 次のコマンドでビルドができます。これは docker-compose.yml で「build:〜」を使っているときだけ必要な作業で、一度実行したら Dockerfile に変更を加えるまで行う必要はありません。

docker-compose build

ビルドが正常に完了したらコンテナーの起動を行います。

docker-compose up -d

「-d」はバックグラウンドで実行するためのオプションです。実行が無事完了したら「http://192.168.1.1:8080」で nginx のウェブページに接続できます。phpMyAdmin を表示する場合は「http://192.168.1.1.:8888」が URL となります。ログインの際はユーザーが「root」、パスワードが「secret」となっています。

よく使うコマンド

docker の exec コマンドを利用するとコンテナー内でコマンドを実行できます。
-i, -t のオプションを併用して bash を実行するとシェル操作ができます。

docker exec -it コンテナーID bash

コンテナーのIDの確認するには「docker ps」コマンドで確認できます。
また、コンテナーIDの代わりに「docker-compose ps」コマンドで調べた Name を指定することもできます。


docker-compose のコマンドとしては次のものがあります。
こちらは「docker-compose start」のようにして使います。

build Dockerfileをもとにサービスをビルドします。サービスに「build:」が指定されている場合のみ必要となります。一度ビルドしてしまえば毎回実行する必要はなく、Dockerfileに変更を加えた場合のみ実行します。
up コンテナを作成し、サービスとして実行します。バックグラウンド(Detached mode)で実行したい場合は「-d」オプションを付けます。また、「–build」をつけた場合は上記の build を行った後で起動します。
down 「up」コマンドで作成されたコンテナーを停止し、コンテナー、ネットワーク、ボリューム、イメージを削除します。
start 作成済みのコンテナーのサービスを開始します。
stop 実行中のサービスを停止します。
run 「run nginx」のようにサービス名を指定すると特定のサービスのみ実行できます。
ps コンテナーの状態を一覧表示できます。実行中であればポートの確認もできます。
exec 「docker exec」と同じもので、指定したサービス内でコマンドを実行します。
「docker-compose exec nginx sh」のようにして使います。

すべての利用可能なコマンドを知るには公式ドキュメントを確認してください。

参考

公式ドキュメント
https://docs.docker.com

Docker Hub
https://hub.docker.com

Windows 10 での Hyper-V の有効化
https://docs.microsoft.com/ja-jp/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v


Similar Posts:




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です