【docker】docker composeを使用したLAMP環境の構築

docker composeを使用してLAMP環境の構築を行います。

ポイントは以下の通りです。

ポイント

webサーバコンテナとmysqlコンテナを生成する。

2つのコンテナを同じネットワークへ参加させる。

webサーバコンテナはドキュメントルートとローカル端末のディレクトリを共有させる。

mysqlコンテナは、データをローカル端末のディレクトリに共有させる。

ディレクトリ構成

ディレクトリ構成は以下とします。

ディレクトリ or ファイル説明
apphtmlやphpファイルなどを配置する為のディレクトリ
docker-compose.ymldocker-compose.ymlファイル
docker/web/DockerfileDockerfileファイル
docker/db/volumeデータベース格納領域

定義ファイルの内容

定義ファイル(docker-compose.yml)の内容は以下の通りです。
以降は定義ファイルの記載内容について説明します。

version: '3'
services:

  web:
    container_name: Laravel5.8
    restart: always
    build:
      context: .
      dockerfile: ./docker/web/Dockerfile
    privileged: true
    ports:
      - 4003:80
    volumes:
      - ./app:/www-contents

  db:
    container_name: Laravel_mysql_5.7
    restart: always
    image: mysql:5.7
    ports:
      - 3307:3306
    volumes:
      - ./docker/db/volume:/var/lib/mysql
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=sample
      - MYSQL_USER=user
      - MYSQL_PASSWORD=password

webサーバコンテナ

docker-compose.ymlで”web”と書かれた部分は、webサーバのイメージを生成する内容になります。

dockerファイルのビルド

指定したディレクトリにあるdockerファイルをビルドします。
dockerファイルのファイル名は “Dockerfile” として下さい。

    build:
      context: .
      dockerfile: ./docker/web/Dockerfile

コンテナ名

docker コンテナ名を指定します。今回は Laravel5.8 としました。

container_name: Laravel5.8

ポートの開放

ポートを解放します。

ports:
      - 4003:80

ディレクトリ共有

ホストOSとゲストOSのディレクトリを共有します。今回はホスト側の app というディレクトリとゲストOSはApacheのドキュメントルートを共有しています。

volumes:
      - ./app:/www-contents

mysqlサーバコンテナ

docker-compose.ymlで”db”と書かれた部分は、mysqlイメージを生成する内容になります。

利用するイメージ

Webサーバのイメージを生成する場合、dockerファイルを利用しました。
mysqlコンテナの生成には、dockerファイルを利用したイメージを使用せず、docker hubに存在するmysqlイメージを指定し使用します。

image: mysql:5.7

環境設定

mysqlコンテナを生成する際に必要な環境設定値を指定します。

    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=sample
      - MYSQL_USER=user
      - MYSQL_PASSWORD=password

ネットワーク

dockerネットワークは、docker composeを実行すると自動で生成されます。

最後に

docker composeの実行は、以下を参照して下さい。

© DeNnie.Lab All Rights Reserved.