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

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

最終更新日: 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 が便利すぎる
  • はてなブックマーク
  • Pocket
  • Linkedin
  • Feedly

この記事を書いた人

Twitter

sponserd

    keyword search

    recent posts

    • Twitter
    • Github
    contact usscroll to top
      • Facebook
      • Twitter
      • Github
      • Instagram