カテゴリー: Server

DockerでLAMP環境をつくり、LimeSurveyを動かしてみた

はじめに

LAMPのローカル環境構築には便利なツールがたくさんあります。
MacだったらMAMP、WindowsならWAMPなどが有名でしょうか?

今回、調査のためにLimeSurveyを使用することになったのですが、PHPのローカル環境がなかったので、Dockerで構築してLimeSurveyを乗せてみました。

Docker関連ファイルの作成

以前、MyCoachのDocker環境を変えてみたという記事も書かせていただいたので、同じようなフォルダ構成にしました。

project ┬ docker ┬ mysql # MySQL関連の設定
        │        └ php   # PHP関連の設定
        ├ html # このディレクトリを/var/www/htmlにマウント
        └ docker-compose.yml

docker-compose.yml

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にアクセスできるようになりました。

備忘録としてコマンドを記載しておきます。

# コンテナ一覧を見る(-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-

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`をコンテナ上に配置します。

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

Docker起動

今回はLimeSurveyのディレクトリを`html`以下に配置しましたが、普通にプロジェクトを配置すればそこがドキュメントルートになります。

下記で起動して確認します。

$ 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を使えば色々なローカル環境を作ることができるのは大きいですね。
もっと使いこなせるようになりたいと感じました!

naoki85

シェア
執筆者:
naoki85
タグ: Dockerphp

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

2週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

4週間 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前