0%

DevelopWEB開発・運用ノウハウ

Posted:2018.04.12

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

これまでの過去記事で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 が便利すぎる

author
この記事を書いた人オガワ シンヤ
FacebookTwitter

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

制作のご依頼やお問い合わせ・パートナー業務提携のご相談はこちら

デザインやウェブ制作についてのご依頼やご相談、その他お問い合わせなどもお気軽にご連絡ください。フットワークの軽さやレスポンスの早さ、また豊富な経験や知識、技術を活かした対応力といったフリーランスクリエイターの強みでクライアント様、パートナー企業様のお力になります。デザインからコーディングやWordPress実装といったウェブサイト構築はもちろん、写真撮影や動画編集、コンテンツ制作からサイト運用サポートまで一括してお任せください。

ホームページ制作のご検討やウェブ運用でお悩みの経営者様や企業のウェブ担当者様をはじめ、個人で店舗を営んでいらっしゃるオーナー様、フリーで活動されているビジネスオーナー様はもちろんのこと、リソース不足でお困りの制作会社様、またクリエイターをお探しの代理店様も大歓迎です。

コンタクトをご希望の方はお手数ですが、下記よりお問い合わせフォームのページへアクセスしていただき、必要事項を入力の上メッセージを送信してください。確認でき次第すぐに折り返しご連絡致します。

こんな記事も読まれています

コメントもお気軽にどうぞ

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

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

CAPTCHA


ページトップへ
大阪市天王寺区のホームページ制作デザイン事務所(SOHO)DesignSupply.【デザインサプライ】