Ownedmedia ウェブ制作に役立つコンテンツを発信中!

開発環境構築 2018.04.12

ローカル開発環境へのDocker導入の流れについてまとめ(LAMP環境構築編)

Tags: ,,,,,,
最終更新日:Update

これまでの過去記事でDockerについて基本的なところをまとめていきましたが、今回はDockerを使ってローカルにLAMP開発環境を構築していきたいと思います。Dockerを使った環境構築のメリットといえばやはり早くできることではないでしょうか。またDockerfileを使うことで他のPCでも共有が簡単になるので便利です。

 

Dockerfileを使ったLAMP環境構築

Dockerでの開発環境構築についてはいろいろあるかと思いますが、だいたい下記の方法が考えられます。

1.OSのイメージからコンテナを起動し、その中で直接インストールを進めていく
2.Docker Hubに用意されているパッケージをダウンロードしてそのまま使う
3.開発環境を設定したDockerfileからイメージを作成する

 

今回はDockerfileを使ってLAMP開発環境を構築していく方法で進めていきます。Dockerfileについては過去記事「Dockerfileで使う命令と書き方まとめ」でも触れていますのでご参考に。

 

またDockerfileと合わせてdocker-composeを使うことで、イメージごとに分けて管理ができるようになります。ここではwebサーバーの設定やドキュメントルートをローカル側のホストに変更するなどしています。

 

あらかじめローカル環境構築用ディレクトリの用意しておきます。サンプルでは以下のような形になっています。

docker
   ┣━ docker-compose.yml
   ┣━ php-apache
     ┣━ Dockerfile
     ┣━ base.conf
     ┗━ php.ini
   ┣━ mysql
     ┣━ Dockerfile
     ┗━ mysql.cnf
   ┗━ htdocs
     ┗━ index.php

 

まず「docker-compose.yml」ですが、これには各イメージごとの設定をまとめて記述しておきます。これをビルドすることで各イメージのコンテナが連携するようになります。そして、Webサーバー用として「php-apache」DBサーバー用として「mysql」のディレクトリを用意し、その中に各Dcokerfileとイメージ内にコピーするための設定ファイルを入れておきます。

 

最後の「htdocs」はWebサーバーのドキュメントルートになります。localhostを参照した時に表示されるようになります。

 

各イメージのDockerfileの作成

引き続きWebサーバー(apache・PHP)とDBサーバー(mysql)のDockerfileを作成していきます。それぞれ下記のように設定しました。

【php-apache/Dockerfile】

FROM php:7.1-apache
MAINTAINER [NAME]<*****@example.com>

COPY ./base.conf /etc/apache2/sites-available/base.conf
COPY ./php.ini /usr/local/etc/php/

 

【mysql/Dockerfile】

FROM mysql:5.7
MAINTAINER [NAME]<*****@example.com>

COPY ./my.cnf /etc/mysql/conf.d/my.cnf

 

それぞれイメージを指定しておきます。Webサーバーの方ではlocalhostを参照するための変更したVirtualHost設定ファイルを置き換えます。DBサーバーでもmysqlの設定ファイルを置き換えます。

 

docker-compose.ymlの作成

次にdocker-compose.ymlにDockerで作成するイメージの内容を設定していきます。今回は下記のようになりました。

 

【docker-compose.yml】

version: '3'
services:
 mysql:
  build: ./mysql
  environment:
  MYSQL_ROOT_PASSWORD: 'password'
  volumes:
   - ./mysql/mysql_data:/var/lib/mysql
 phpmyadmin:
  image: phpmyadmin/phpmyadmin
  environment:
   - PMA_ARBITRARY=1
   - PMA_HOST=mysql
   - PMA_USER=root
   - PMA_PASSWORD=password
  links:
   - mysql
  ports:
   - 8080:80
  volumes:
   - /sessions
 apache:
  build: ./apache
  ports:
   - '80:80'
  volumes:
   - ./htdocs:/var/www/html
  depends_on:
   - mysql

 

ファイルの形式がymlなのでインデントには注意します(ビルド時にエラーが出る)今回はWebサーバーとDBサーバーの他にもphpMyAdminのイメージも使いますので、ここでイメージの設定を行なっています。ポート番号が適宜変更してください。ここで指定したポート番号でアクセス(localhost:8080)することでphpMyAdminが表示されます。

 

Webサーバーの方は「htdocs」を「/var/www/html」にマウントすることでドキュメントルートになるようにしています。またDBサーバーとも紐づけています。DBサーバーもデータをマウントすることでコンテナを終了してもデータが残るようにします。

 

各種設定ファイルの作成

そして、ホスト側に用意したコンテナ内に置き換える設定ファイルへ記述していきます。

【apache/base.conf】

<VirtualHost *:80>
  ServerName localhost
  ServerAlias localhost
  VirtualDocumentRoot "/var/www/html/"
</VirtualHost>

 

【apache/php.ini】

[Date]
date.timezone = "Asia/Tokyo"

[mbstring]
mbstring.internal_encoding = UTF-8
mbstring.language = Japanese

 

【mysql/mysql.cnf】

[mysqld]
character-set-server=utf8
datadir = /var/lib/mysql

 

apache設定ファイルのbase.confではlocalhostで表示させるためのVirtualHost設定を行います。続けてphp設定ファイルのphp.iniでも少し編集を加えます。mysql設定ファイルのmysql.cnfの方も同じく編集を加えています。

 

docker-composeからイメージの作成とコンテナ起動

下記コマンドでdocker-compose.ymlをビルドします。これでイメージ・コンテナが作成され、コンテナが起動している状態になります。

$ docker-compose up -d --build

 

コンテナが起動しているのを確認したらhttp://localhostへアクセスするとウェブページが表示されます。またhttp://localhost:[PORT]へアクセスするとphpMyAdminがログインされた状態で表示されています。

 


 

OSのイメージから一つひとつ揃えていくのと比べて、Dcokerfileやdocker-composeを使うことで短時間で構築ができるようになります。また共有も簡単なのでDcokerのメリットを活かせられるのではないでしょうか。

 

(参考にさせて頂いたサイト)
Docker Composeを使ってLAMP環境を立ち上げる
phpMyAdmin on docker が便利すぎる

この記事を書いた人

オガワ シンヤ

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

  • Twitter

コメントフォーム

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。

内容に問題なければ、お名前・ハンドルネームとメールアドレスを入力いただき、下記の「コメントを送信」ボタンを押してください。

CAPTCHA


この記事もよく読まれています

Scroll to Top
ご質問・ご相談はありませんか ?