開発運用

DockerでLAMP/LEMP環境構築

LAMP(Linux、Apache、MySQL、PHP)またはLEMP(Linux、Nginx、MySQL、PHP)の環境をDockerを使用して簡単にセットアップする方法について、完全かつ包括的な記事を以下にご紹介します。この記事では、LAMPおよびLEMP環境をDockerで構築する手順を、実際のコマンドと設定ファイルを使って解説します。

1. Dockerとは

Dockerは、アプリケーションとその依存関係をコンテナという軽量な仮想化環境にまとめ、どこでも動作させることができるプラットフォームです。これにより、開発環境のセットアップが簡単になり、異なる環境でも同じアプリケーションを動作させることができます。

2. LAMP環境とは

LAMPは、Linux、Apache、MySQL、PHPの略で、これらのソフトウェアを組み合わせたWebサーバ環境です。Web開発者はこの環境を使用して、PHPで動作するWebアプリケーションを開発することが一般的です。

3. LEMP環境とは

LEMPは、Linux、Nginx、MySQL、PHPの略で、LAMPと同様にWeb開発用のスタックですが、Apacheの代わりにNginxを使用します。Nginxは、高速で軽量なWebサーバとして知られており、大規模なトラフィック処理が求められる場合に適しています。

4. Dockerを使用したLAMP/LEMP環境のセットアップ手順

4.1 前提条件

まず、DockerおよびDocker Composeがインストールされていることを確認します。まだインストールしていない場合は、公式のDockerインストールガイドを参照してください。

4.2 LAMP環境の構築

LAMPスタックをDockerで構築するためには、docker-compose.ymlファイルを使用して各コンテナを定義します。

4.2.1 プロジェクトディレクトリの作成

まず、LAMP用のディレクトリを作成します。

bash
mkdir lamp-docker cd lamp-docker

4.2.2 Docker Composeファイルの作成

docker-compose.ymlという名前で以下の内容を記述します。

yaml
version: '3.7' services: apache: image: php:7.4-apache container_name: apache ports: - "8080:80" volumes: - ./www:/var/www/html networks: - lamp-network mysql: image: mysql:5.7 container_name: mysql environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: lampdb volumes: - mysql-data:/var/lib/mysql networks: - lamp-network phpmyadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmin ports: - "8081:80" environment: PMA_HOST: mysql networks: - lamp-network networks: lamp-network: driver: bridge volumes: mysql-data:

このdocker-compose.ymlファイルでは、次のサービスが定義されています:

  • Apachephp:7.4-apacheイメージを使用)
  • MySQLmysql:5.7イメージを使用)
  • phpMyAdmin(MySQLデータベースを管理するため)

4.2.3 コンテナの起動

次に、以下のコマンドを実行してDockerコンテナを起動します。

bash
docker-compose up -d

これで、LAMP環境が起動します。ブラウザでhttp://localhost:8080にアクセスすると、Apacheのデフォルトページが表示され、http://localhost:8081にアクセスすると、phpMyAdminのログインページが表示されます。

4.3 LEMP環境の構築

LEMPスタックもDocker Composeを使用して構築できます。LAMP環境とほぼ同じ手順ですが、Apacheの代わりにNginxを使用します。

4.3.1 プロジェクトディレクトリの作成

まず、LEMP用のディレクトリを作成します。

bash
mkdir lemp-docker cd lemp-docker

4.3.2 Docker Composeファイルの作成

docker-compose.ymlという名前で以下の内容を記述します。

yaml
version: '3.7' services: nginx: image: nginx:latest container_name: nginx ports: - "8080:80" volumes: - ./www:/usr/share/nginx/html - ./nginx.conf:/etc/nginx/nginx.conf networks: - lemp-network php: image: php:7.4-fpm container_name: php volumes: - ./www:/var/www/html networks: - lemp-network mysql: image: mysql:5.7 container_name: mysql environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: lempdb volumes: - mysql-data:/var/lib/mysql networks: - lemp-network networks: lemp-network: driver: bridge volumes: mysql-data:

このファイルでは、次のサービスが定義されています:

  • Nginxnginx:latestイメージを使用)
  • PHP-FPMphp:7.4-fpmイメージを使用)
  • MySQLmysql:5.7イメージを使用)

4.3.3 Nginxの設定ファイルの作成

nginx.confという名前でNginxの設定ファイルを作成します。以下の内容を記述します。

nginx
server { listen 80; server_name localhost; root /usr/share/nginx/html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fa

Back to top button