ローカル開発環境へのDocker導入の流れについてまとめ(LAMP環境構築編)
最終更新日: Update!!
これまでの過去記事でDockerについて基本的なところをまとめていきましたが、今回はDockerを使ってローカルにLAMP開発環境を構築していきたいと思います。Dockerを使った環境構築のメリットといえばやはり早くできることではないでしょうか。またDockerfileを使うことで他のPCでも共有が簡単になるので便利です。
OSのイメージから一つひとつ揃えていくのと比べて、Dcokerfileやdocker-composeを使うことで短時間で構築ができるようになります。また共有も簡単なのでDcokerのメリットを活かせられるのではないでしょうか。 (参考にさせて頂いたサイト) Docker Composeを使ってLAMP環境を立ち上げる phpMyAdmin on docker が便利すぎる
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/mysqlapache設定ファイルの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 が便利すぎる
sponserd
keyword search
recent posts
- Shopifyでのテーマ開発に便利なローカル環境を構築する#2:Shopify CLI
Shopifyでのテーマ開発に便利なローカル環境を構築する#2:Shopify CLI
- Shopifyでのテーマ開発に便利なローカル環境を構築する#1:Shopify Theme Kit
Shopifyでのテーマ開発に便利なローカル環境を構築する#1:Shopify Theme Kit
- Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#7:動的ルーティングとデータベース更新処理
Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#7:動的ルーティングとデータベース更新処理
- Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#6:ミドルウェアの設定と認証ページ作成
Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#6:ミドルウェアの設定と認証ページ作成
- Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#5:ログイン認証機能の実装
Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#5:ログイン認証機能の実装
- Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#4:ログイン認証ユーザー作成
Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#4:ログイン認証ユーザー作成
- Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#3:静的ページの作成とルーティング
Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#3:静的ページの作成とルーティング
- Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#2:Laravelのインストール
Docker+Laravelでバックエンドの開発環境構築とウェブアプリケーション制作#2:Laravelのインストール
categories