DockerにPHPとMYSQLを用意して、Apacheからアクセスします。
概要
Dockerには、PHPやMySQLやApacheなどの環境が元から用意されています。なので、これらを正しく使えば、とても簡単に環境を構築できます。
今回は、これらを使ってLAMP環境を作ってみます。
環境
Dockerのイメージは、Docker Hubにあるものを使用します。
それらの情報を下記に書いておきます。
- PHP……php:5.6-apache
- MySQL……mysql:5.7
MySQLの用意
最初に、データベースであるMySQLの準備をします。
イメージは、下記のリンクのバージョン5.7を使用します。
mysql - Official Image | Docker Hub
下記のコマンドを実行してMySQLのイメージをダウンロードします。
docker pull mysql:5.7
コンテナの作成は、下記のようにします。
docker run --name mysql -e MYSQL_ROOT_PASSWORD=パスワード -d mysql:5.7
–nameは、今回mysqlとしました。この名前は後々使うので覚えておきます。
MYSQL_ROOT_PASSWORDには、データベースのパスワードを設定します。
データベースにアクセスする場合は、ユーザー名: root、パスワード: 指定したパスワード、のようにしてアクセスします。
このようにコンテナを作成した時、データベースの文字コードはutf-8ではないので、文字コードをutf-8にしたい場合は、下記の内容が書かれたファイルを作成します。
[mysqld]
character-set-server=utf8
このファイルの名前をmy.cnfとして、/my/conf.d/my.cnfに置いておきます。
そうしたら、dockerの-vオプションを使ってこのようにコンテナを起動します。
docker run --name mysql -v /my/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=パスワード -d mysql:5.7
-vオプションを使って、設定ファイルをコンテナから見ることができるようにします。
PHPとApacheの用意
次に、PHPとApacheの準備をします。
イメージは、下記のリンクにあるものを使用します。
今回使用するphp:5.6-apacheは、PHPの環境の他にWebサーバのApacheも入っているので、簡単にPHPのサイトを動かすことができます。
下記のコマンドを実行して、イメージをダウンロードします。
docker pull php:5.6-apache
そして、–link、-v、-pオプションなどを利用して、下記のようにして、環境の出来上がりです。
docker run -p 80:80 -v /my/www:/var/www/html --link mysql:mysql --name php -d php:5.7
-vオプションの、/my/wwwは、今回の環境で実行したいファイルなどがある場所を指定します。
しかし、ダウンロードしたイメージには、PHPのMySQLなどに接続するための拡張モジュールがインストールされていません。なので、拡張モジュールである、MySQL、MySQLi、PDO_MySQL と、文字化け防止のためにmbstringをインストール するためのコマンドを実行します。
下記のコマンドでシェルに接続します。
docker exec -ti php bash
そして、パッケージのアップデートをしてから、インストールをします。
apt-get update
docker-php-ext-install mysql mysqli pdo_mysql mbstring
その後、再起動をすれば、環境の完成です。
あとは、ipアドレスを指定してアクセスすれば動作の確認ができます。
まとめ
dockerのオプションをいくつか使用したので、なかなか理解するのが難しいと思います。
何度か、やってみて覚えましょう。