1
/
5

phpの開発環境用のdocker-compose

fattyrabbit/php-fpmを利用したローカル開発環境のdocker-compose

ソース:https://bitbucket.org/FattyRabbit/php-dev-docker-compose/src/master/

概要:phpの開発(laravelの開発用)のためにlocal環境を作成する目的で、以下を目指しました。 - 出来る限り軽い - 他のバージョンのPhpを同時に動かすそれで選択したのが「nginx」+「php-fpm」の構成しました。

php-fpmのカスタマイズ

元になるphpのfpmは問題点としてListenポートが「9000」固定のところが問題でした。その為にphp-fpm(まずは7.3)のDockerfileを改善してContainerを実行する際に設定出来るように修正を加えました。ソース:https://bitbucket.org/dockerfile_test/php-fpm/src/master/

 proxy:
        build: nginx
        container_name: proxy
        build:
          context: .
          dockerfile: docker-nginx/Dockerfile
        volumes:
          - ./etc/logs/nginx:/etc/nginx/logs
          - ./etc/nginx/conf.d:/etc/nginx/conf.d
          - ./etc/nginx/letsencrypt:/etc/letsencrypt
          - ./www:/var/www/
        ports:
          - 80:80
          - 443:443

nginx

重要な問題としてテストサーバーの変動があった場合、Dockerfile内でCOPYを利用すると再Buildしても上手く更新されない場合がありましたので、サーバーの管理をvolumesで管理するように設定しました。

php-7.3:
    build:
      context: .
      dockerfile: docker-php-7.3/Dockerfile
      args:
        LISTEN_PORT: 9001
    container_name: php-7.3
    volumes:
      - ./www:/var/www/
      - ./etc/php/php.ini:/usr/local/etc/php/php.ini

php-fpm

このではListenのポートを「9001」にしてみました。

nginxの設定

実際のウェブサーバーでphpを利用する設定です。

location ~ \.php$ {
        fastcgi_pass    php-7.3:9001;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }