サイトアイコン KOKENSHAの技術ブログ

docker-compose-lamp 最も簡単なPHP開発環境構築

最近、なぜかPHPのプライベートレッスンの講師になりまして、PHPの勉強で大忙しいです!笑。

どんな言語もそうなんですが、開発環境がとても重要です。今日は私が思う最も簡単なPHPの開発環境の構築方法をご紹介したいと思います!

目次

Docker

 

https://www.docker.com/

まずはDockerの話です、Dockerは近年とても注目されているコンテナ技術で、私が今会社の仕事のプロジェクトも、個人の趣味のプロジェクトも可能な限り開発環境はDockerで構築するようになっています。

docker-compose upというコマンド1つで、特定の開発環境がすぐ立ち上げられます。とても便利です!

dockerファイルやdocker-compose.ymlファイルを変更すれば、すぐ違う環境になります。今まで表現しにくい環境の構築もコードで表現できるようになりました。

特に昔、知らない人が書いたら環境構築手順書を見て、苦闘した経験のある方は、きっと一層dockerのありがたさが理解できるかと思います。

このブログも過去、いくつかdocker関連の記事を書きました。興味のある方は合わせてお読みください。

初めてでも確実に動くLaradockの起動までの手順(更新版)

保存版 Ubuntu16.04にDockerをインストールする簡単な方法docker-compose まで!

一番分かりやすいdocker-composeで起動するRubyOnRailsの開発環境

PHPの開発環境

今回はご紹介するのはdocker-compose で立ち上げる環境の構築方法ですが、もちろんこれは唯一の方法ではありません。

上のツイートでも呟いた通り、様々なPHPの構築方法があります。もちろん上記の方法も本の一部です。

今回ご紹介する方法は、どちらかと言うと、ちょっと少しITの経験とバックグラウンドのある中級者向けかもしれません!

でも、理解すれば、本当に簡単です。

docker-lamp

今回ご紹介するのは、こちらです!

https://github.com/naga3/docker-lamp

Osamu Nagayamaのコードです。

ただし、こちらのコードは、一箇所インストーリ中に下記のエラーになる箇所がありまして

Package 'libpng12-dev' has no installation candidate

他の方からのpull requestもありましたが、まだ適用されていない模様です。(2018/10/13現在)https://github.com/naga3/docker-lamp/pull/7

私もフォークして、そこを修正しましたので、よかったら、私のrepoを使ってもいいです。

https://github.com/kawashimaken/docker-lamp

修正した箇所はこちらです!

https://github.com/kawashimaken/docker-lamp/commit/2474b612dd60ea4aa61f6fb382e53a8e71f9e88a

準備開始

Docker

まずは、Dockerのインストールですね!

ちなみに、Dockerのダウンロードリンクが分かりにくくなり、「ログインしないとダウンロードできないなんでありえない」とコミュニティが激怒しています!笑

https://github.com/docker/docker.github.io/issues/6910

その中、リンクを貼ってくれる人もいました。

https://download.docker.com/mac/stable/Docker.dmg (MacOS用)

git clone

仮に私のrepoを使うとします。

そうしましたら、まず好きなところで

git clone https://github.com/kawashimaken/docker-lamp.git

を実行して、

cd docker-lamp
docker-compose up

これで終わりです!PHPの環境構築が終わりです!

簡単なdocker-lampの構成説明

docker-compose.yml

まず、docker-compose.ymlですが下記の通りになっています。

version: '2'
services:
  mysql:
    build: ./mysql  #mysqlフォルダのDockerファイルを使ってビルドしてください
    environment:
      MYSQL_ROOT_PASSWORD: pass  #MSQLの環境変数として、mySQLのrootのパスワードはpassにしてください
    volumes:
      - db:/var/lib/mysql  #dbは コンテナの中の/var/lib/mysqlにマッピングしてください
  php:
    build: ./php   #phpフォルダのDockerファイルを使ってビルドしてください
    ports:
      - '80:80'   #コンテナの中の80番ポートをhostの80番ポートにマッピングしてください
    volumes:
      - ./html:/var/www/html  #hostの ./htmlフォルダをコンテナの中の/var/www/htmlフォルダにマッピングしてください
    depends_on:
      - mysql   # mysqlというサービスを使うよ
volumes:
  db:

php/Dockerfile

FROM php:7.0-apache    #このdockerイメージを使います
COPY php.ini /usr/local/etc/php/   
#hostにある php.iniファイルを コンテナの中の  /usr/local/etc/php/にコピーしていきます

#下記の命令を実行します。いくつか必要なパッケージをインストールします。
RUN apt-get update \
  && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev \
  && docker-php-ext-install pdo_mysql mysqli mbstring gd iconv mcrypt

libpng-devのところが、上にお話ししました、修正したところです。(上は修正後の正しい方です。)

php/php.ini

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"  #エンコードの設定
mbstring.language = "Japanese"  #使用する言語の設定

PHPの設定です。

mysql/Dockerfile

FROM mysql:5.7   #このdockerイメージを使いますよ
COPY ./my.cnf /etc/mysql/conf.d/  
#hostのmy.cnfファイルを使って、コンテンの中の  /etc/mysl/conf.dにコピーしていきます

mysql/my.cnf

mysqlの設定ファイルです!

[mysqld]  
character-set-server=utf8  #エンコードの指定

htmlフォルダ

ここはあなたのPHPファイルをおいてください。

私のスクリーンショットは今、作業途中のレッスン用のコードです。

実行!

例えば、定番のphpファイルを作りましょう

index.php

<?php
 phpinfo();
?>

それから、docker-compose upして、起動しましたら

ブラウザーで http://localhostを開いてみてください。

下の画面が表示されるはずです!

(ここで表示されている情報は、当然ですが、コンテナのos、PHPなどの情報です。)

また、GitHubのPHP勉強用のサンプルコードも公開しましたので、合わせて、チェックしてください。

PHPを教える人、勉強する人のためのPHPウェブアプリケーションサンプルコード

まとめ

これで、PHPの開発環境構築完了です!mySQLも使えます!

mySQLを使うデモはまた別途記事を書きたいと思います!

では、Happy PHP  coding!

ご機嫌よ!

[amazonjs asin=”4297100339″ locale=”JP” title=”Docker/Kubernetes 実践コンテナ開発入門”]

[amazonjs asin=”4883375692″ locale=”JP” title=”6時間でできるLAMPサーバ構築ガイド―Linux&Apache&MySQL&PHP+最新CMSですぐ使える!”]

[amazonjs asin=”4897978858″ locale=”JP” title=”いきなりはじめるPHP~ワクワク・ドキドキの入門教室~”]

[amazonjs asin=”1491978910″ locale=”JP” title=”Learning PHP, MySQL & JavaScript: With jQuery, CSS & HTML5 (Learning PHP, MYSQL, Javascript, CSS & HTML5)”]

モバイルバージョンを終了