こんにちは。
自分が使っているPCはWindowsやMacだけどLinux環境でなにか試して見たいことってありますよね。
今回はDockerを使ってLAMP環境を構築してみましたので、その方法について残しておきたいと思います。
Dockerをインストール
まずは、Dockerをインストールします。Dockerは以下のリンクから取得できるかと思います。
https://www.docker.com/products/docker-desktop
Macの場合はHome Brewからでも取得することができます。今回はHome Brewを使用したインストール方法を解説します。
Macで環境を構築する際に便利なものにHome Brewというパッケージマネージャーがあります。 なにか必要なパッケージがあるときにその依存関係にある他のパッケージも一緒にインストールしてくれる[…]
まずは、Home BrewからDockerを取得します。
$ brew install docker
$ brew cask install docker
Dockerがインストールできたか確認をします。
$ docker --version
その後、ApplicationフォルダにDocker.appがダウンロードされているはずなので、Dockerのデーモンを起動するためにこちらを起動します。
ポップアップが出てきますが、開く→OKとクリックし、その後パスワードを入力し、Docker.appを起動させます。
LAMP環境構築のための各種設定
ここからは、実際に環境を構築していきます。まず、適当なフォルダを作ります。
$ mkdir docker-lamp
作ったフォルダに移動して、各種設定ファイルを作成していきます。
$ cd docker-lamp
$ mkdir php # php-apacheサーバー設定データ用
$ touch php/Dockerfile
$ mkdir mysql # MySQLデータ用
$ mkdir html # phpファイル用
$ touch docker-compose.yml
$ touch php.ini
次に、docker-compose.ymlを記述していきます。
version: '3'
services:
mysql:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test
- MYSQL_USER=test
- MYSQL_PASSWORD=test
php:
build: ./php
volumes:
- ./php.ini:/usr/local/etc/php/php.ini
- ./html:/var/www/html
ports:
- 8080:80
depends_on:
- mysql
できたら、phpサーバー用のDockerfileを記述していきます。php:7.4-apacheにはMySQLのドライバが入っていないので、同時にインストールしています。
FROM php:7.4-apache
RUN apt-get update && apt-get install -y libonig-dev && \
docker-php-ext-install pdo_mysql mysqli mbstring
あとは、php.iniを好みのようにカスタマイズしたら設定は完了です。早速環境を構築していきましょう。
LAMP環境を構築
先程までに各種設定ファイルを作成しましたので、コンテナを起動します。
$ docker-compose up -d
# Starting docker-lamp_mysql_1 ... done
# Starting docker-lamp_php_1 ... done
コンテナが起動したかを確認します。
$ docker ps
ここに2つのコンテナが表示されていれば起動完了です。
動作確認
先程作成したhtmlフォルダにhtmlファイルを作成してブラウザで確認してみます。
以下ファイルをindex.htmlとしてhtmlフォルダに入れます。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
できたら、http://localhost:8080にアクセスするとHello Worldページが表示されます。
CLIでphpスクリプトを実行したい場合などはコンテナに入って実行します。(コンテナIDはdocker psコマンドで確認できます)
$ docker exec -it コンテナID /bin/bash
あとはデータベース側ですが、MySQLにログインしたい場合は以下のようにします。ユーザ名はdocker-compose.ymlで設定したものです。
$ docker exec -it コンテナID mysql -u ユーザ名 -p
このあとにパスワード入力を求められ、docker-compose.ymlで設定したパスワードを入力し、MySQLを操作することができます。
最後に、phpからMySQLにアクセスしたい場合は設定を以下のようにします。基本的にdocker-compose.ymlで設定した値を使用します。
注意点としてはホストがIPやlocalhostではなくmysqlコンテナのサービス名を指定します。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME=test
DB_PASSWORD=test
コンテナの停止
最後に停止についてです。起動したコンテナを停止するには以下のコマンドを使用します。
$ docker-compose stop
最後に
Dockerを使うことで簡単にLAMP環境をWindowsやMacに作ることができました。
ちょっと試したいことがあるときなんかにもコンテナを利用して簡単に環境が作れるのは魅力的ですね。