はじめに
LAMPのローカル環境構築には便利なツールがたくさんあります。
MacだったらMAMP、WindowsならWAMPなどが有名でしょうか?
今回、調査のためにLimeSurveyを使用することになったのですが、PHPのローカル環境がなかったので、Dockerで構築してLimeSurveyを乗せてみました。
Docker関連ファイルの作成
以前、MyCoachのDocker環境を変えてみたという記事も書かせていただいたので、同じようなフォルダ構成にしました。
1 2 3 4 | project ┬ docker ┬ mysql # MySQL関連の設定 │ └ php # PHP関連の設定 ├ html # このディレクトリを/var/www/htmlにマウント └ docker-compose.yml |
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | version: '2' services: mysql: build: context: . dockerfile: ./docker/mysql/Dockerfile extends: file: ./docker/mysql/password.yml service: password php: build: context: . dockerfile: ./docker/php/Dockerfile ports: - '80:80' volumes: - ./html:/var/www/html depends_on: - mysql |
こちらの記事を参考に作成させていただきました。
(Docker Composeを使ってLAMP環境を立ち上げる)
MySQL
こちらは以前作成したものをそのまま流用しています。
Dockerの良いところは同じイメージを使用すれば、キャッシュからコンテナを作成してくれるところですね。
https://github.com/naoki85/lime_survey/tree/master/docker/mysql
個人的に詰まったこと
ただ、以前のイメージなどをキャッシュから使用すると、rootパスワードが最初に設定したものになってしまうようです。
Cannot connect to mysql database: Access denied
よく分からなかったので、コンテナやイメージを消して再ビルドしたところなんとかMySQLにアクセスできるようになりました。
備忘録としてコマンドを記載しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 | # コンテナ一覧を見る(-a で停止中のものも含む) $ docker ps -a # 対象のコンテナを消す $ docker rm CONTAINER_ID # イメージの一覧を見る $ docker images # イメージを消す $ docker rmi IMAGE_ID # docker-composeに紐づいたコンテナを消す $ docker-compose rm -v |
PHP
PHPはApacheを含んだイメージからコンテナを作成します。
PHP -OfficialRepository-
1 2 3 4 5 | FROM php:7-apache COPY ./docker/php/php.ini /usr/local/etc/php/ RUN apt-get update \ && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev \ && docker-php-ext-install pdo_mysql mysqli mbstring gd iconv mcrypt |
COPYを使用して、あらかじめ作成しておいた
php.ini
をコンテナ上に配置します。
1 2 3 4 5 | [Date] date.timezone = "Asia/Tokyo" [mbstring] mbstring.internal_encoding = "UTF-8" mbstring.language = "Japanese" |
Docker起動
今回はLimeSurveyのディレクトリを
html
以下に配置しましたが、普通にプロジェクトを配置すればそこがドキュメントルートになります。
下記で起動して確認します。
1 | $ docker-compose up --build |
http://localhost
にアクセスして、下図のような画面になればOKです。
アンケート用のDBを作成してくれますが、この時DB設定が必要です。
聞かれている通りに答えれば良いのですが、1点、DBの場所は、
docker-compose.yml
でつけたサービス名を使用する必要があります。
このサービス名でコンテナがよしなに判断してくれます。
(IP直指定でも問題ないとは思います。)
リポジトリを作りました
LimeSurveyの記事は別の機会に書かせていただこうと思っていますが、アンケート調査機能を実装したいときなど、非常に参考になるかと思います。
WordPress並みに色々できるし、機能が揃っています。
こちらのリポジトリをクローンしていただき、Docker上ですぐに動かせますので、興味ある方は使ってみてください!
https://github.com/naoki85/lime_survey
さいごに
MySQLの設定のあたりで詰まってしまいましたが、やはりDockerを使えば色々なローカル環境を作ることができるのは大きいですね。
もっと使いこなせるようになりたいと感じました!