docker-composeを利用した環境構築

それでは、インストールしたDockerを利用して環境構築を行なっていきましょう。

大まかな処理の流れを動画で確認してから、 改めて以降の解説を元に環境構築を進めていきましょう。

1. 仮想環境用のフォルダを作成

finderでユーザーディレクトリにアクセスし、「MyDocker」という名前でディレクトリを作成します。

2. VSCodeを利用して作成したMyDockerディレクトリを開く

VSCodeの新しいウィンドウを立ち上げ、スタートメニューの「フォルダを開く」から作成したMyDockerディレクトリを開きます。

3. MyDockerディレクトリ内にlamp_sampleその中にlamp_dockディレクトリを作成する

VS Codeの左サイドバーに表示されているMyDockerディレクトリに、フォルダ作成ボタンを利用して「lamp_sample」という名前のディレクトリを作成します。

さらに、そのlamp_sampleディレクトリの中に「lamp_dock」というディレクトリを作成しましょう。

4. lamp_dockディレクトリにdocker-compose.ymlを作成する

作成したlamp_dockディレクトリの中に、
VSCodeのサイドバーの「新規ファイル作成」ボタン を利用して docker-compose.yml を作成します。

docker-compose.yml

# 設定ファイルの文法のバージョン3を利用する。
version: '3'

services:

  # 1. phpモジュールを搭載したapacheをインストールするコンテナ。
  php:
    build: ./php # phpディレクトリのDockerfileに基づいてコンテナ作成
    volumes:
      - ../www:/var/www # ホストのwwwディレクトリをphpコンテナの/var/www(ドキュメントルートのあるディレクトリ)と同期。
    ports:
      - 8080:80 # ホストの8080番ポートをコンテナの80番ポートにフォワード(転送)
    depends_on:
      - mysql

  # 2. mysqlをインストールするコンテナ
  mysql:
    image: mysql:5.7 # mysql5.7のイメージをそのまま利用。
    # mysqlの起動時に文字コードを指定
    command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
    volumes:
      - ./db:/var/lib/mysql # ホストOSのdbフォルダ内にmysqlコンテナのDBの内容を保存
    environment:
      - MYSQL_ROOT_PASSWORD=root # mysqlのルートパスワードを設定
      - MYSQL_DATABASE=sample # デフォルトで作成するデータベース名を設定
      - MYSQL_USER=testuser # デフォルトで作成するDBユーザー名を設定
      - MYSQL_PASSWORD=password # デフォルトで作成するDBユーザーのパスワードを設定
      - "TZ=Asia/Tokyo" # タイムゾーンを設定
  # 3. phpmyadminをインストールするコンテナ
  phpmyadmin:
    image: phpmyadmin/phpmyadmin # phpmyadminのコンテナイメージをそのまま利用
    environment:
      - PMA_HOST=mysql # 上記で作成したmysqlコンテナに接続
    depends_on:
      - mysql # 上記で作成したmysqlコンテナとリンクする
    ports:
      - 8888:80 # ホストの8888番ポートをphpmyadminコンテナの80番ポートに転送
    volumes:
      - ./pma/sessions:/sessions # ホストOSのpmaディレクトリ内にphpmyadminコンテナのセッションファイルを保存

念の為詳しく解説しておりますが、現時点で深い理解は不要です。コピーペーストで構いません。

5. phpディレクトリにDockerfileを作成する

lamp_dockディレクトリ内に「php」というディレクトリを作成し、その中に「Dockerfile」という名前でファイルを作成します。(拡張子は不要です。)

Dockerfile

# apacheとphp7.2がインストールされたwebサーバ
FROM php:7.2-apache 

# 設定ファイルをコンテナにコピー
COPY ./php.ini /usr/local/etc/php/

# vim 及び 各種PHPモジュールのインストール、キャッシュ消去
RUN apt-get update && apt-get install -y \
  vim \
  && docker-php-ext-install pdo_mysql mysqli mbstring exif \
  && apt-get clean

先ほどのdocker-compose.yml内で指定した、phpのコンテナを作成するための設計図になります。

ベースとなっているのはDockerhubで配布されているphpモジュール設定済みのapacheで、さらにpdoを利用できるように各種モジュールをインストールしています。

6. php.iniの作成

phpディレクトリにもう一つのファイル「php.ini」を作成します。

php.ini

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

phpの初期設定を行うファイルです。 デフォルトの設定に上記の設定が上書きされます。

7. docker-compose upの実行

ここまでで仮想環境の準備は完了です。

VScodeのターミナルを開いて、dockerを実行します。 メニューバーから「ターミナル > 新しいターミナル」を選び、ターミナルを開きます。

cd ~/MyDocker/lamp_sample/lamp_dock

上記のコマンドで lamp_dock ディレクトリに移動します。 さらに

docker-compose up -d

上記のコマンドで仮想環境の立ち上げを行います。 初回起動はそれぞれのコンテナの元となるイメージをダウンロードしてからコンテナ作成が行われるので3~5分弱程度の時間がかかります。(マシンスペック、通信環境によって異なります) 次回以降の起動は非常にスピーディになるのがdockerの特徴です。

Creating lamp_dock_mysql_1 ... done
Creating lamp_dock_php_1        ... done
Creating lamp_dock_phpmyadmin_1 ... done

上記の表示が行われ、プロンプトが表示されれば環境構築は完了です。

php環境の確認

それでは、作成した環境を確認してみましょう。

動画で大まかな流れを確認してから、 ご自身の環境で実際に試してみましょう。

lamp_sampleディレクトリに新たに「www」というディレクトリが出来上がっています。

wwwディレクトリ内のhtmlディレクトリがドキュメントルートになっていますので、この中に「sample.php」を作成し

sample.php

<?php

print('Hello, World!');

以上の内容で保存しましょう。

webサーバのコンテナには8080番ポートでアクセスします。

http://localhost:8080/sample.php

にアクセスしてみましょう。

画面上に「Hello, World!」の文字が表示されればOKです。

phpmyadminの確認

続いて、phpmyadminを利用してみましょう。 phpmyadminのコンテナには8888番ポートでアクセスします。

http://localhost:8888/

にアクセスしてみましょう。

docker-compose.ymlで

  • ユーザ名: testuser
  • パスワード: password

と設定していますので、上記を入力して phpmyadminにログインしてみましょう。

問題なくログインできればOKです。

results matching ""

    No results matching ""