Docker Composeを用いてLaravel環境構築


はじめに

前回の記事までで、docker-composeの基礎部分は理解できたと思いました。今回はdocker-composeを使用してLaravel環境を構築していこうと思います。

ファイル準備

ディレクトリ構成
/ -- docker-compose.yml
                   app/ -- Laravelアプリのソースコード
                   
                   web/ -- Dockerfile
                              apache/ -- 000-default.conf
                                 php/ -- php.ini
/ docker-compose.yml
docker-compose.yml
version: '3'

services:
  web:
    build: ./web
    container_name: web
    # Laravelのソースコードを格納する
    volumes:
      - ./app:/var/www/html
    # working_dirを設定することで、コンテナに入った時にこのディレクトリから入れる
    working_dir: /var/www/html
    ports:
      - "8080:80"
    depends_on:
      - db
  db:
    image: mysql:8.0
    container_name: db
    ports:
      - 3306:3306
    environment:
      MYSQL_DATABASE: LaravelDB
      MYSQL_ROOT_PASSWORD: password
/ web / Dockerfile
Dockerfile
FROM php:8.0-apache

# phpの設定ファイルとhttpdの設定ファイルをコンテナ内に設コピー
COPY ./php/php.ini /usr/local/etc/php/
COPY ./apache/000-default.conf /etc/apache2/sites-enabled/

RUN apt-get update

# Laravelプロジェクト作成に必要なパッケージをインストール
RUN apt -y install git unzip

# phpで必要なモノをインストール
RUN docker-php-ext-install pdo_mysql mysqli

# composerのインストール
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php -r "if (hash_file('sha384', 'composer-setup.php') === 'ハッシュ値') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
    && php composer-setup.php \
    && php -r "unlink('composer-setup.php');" \
    && mv composer.phar /usr/local/bin/composer

#Laravelプロジェクトの作成
RUN composer create-project laravel/laravel --prefer-dist laravel_sample

# -- memo -- #
# RUN命令はDockerfileからイメージを作成するときに実行される
# CMD命令はイメージからコンテナが作成される時に実行される
/ web / apache / 000-default.conf
000-default.conf
<VirtualHost *:80>

        DocumentRoot /var/www/html/laravel_sample/public

        <Directory /var/www/laravel_sample>
                AllowOverride All
                Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
/ web / php / php.ini
php.ini
[Date]
date.timezone = "Asia/Tokyo"

[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
ポイント
  • / docker-compose.yml
    volumesでLaravelプロジェクトを作成するディレクトリを指定しています。そのため、ローカルでは /app ディレクトリにLaravelのソースコードが同期されます。

  • / web / Dockerfile
    Laravel環境構築に必要なモノ(Composerなど)のインストールや設定ファイルをローカルからコンテナにコピーしたりしています。「docker-php-ext-install」をすることで、インストールと有効化を同時にしています。
    最後にLaravelプロジェクトを作成しています。

  • / web / apache / 000-default.conf
    apacheのバーチャルホストの設定を記載しています。

Laravel環境を構築する

コンテナを作成・起動する

以下のコマンドを実行することで、Laravel環境が構築され、Laravelプロジェクトも作成されます。

docker-compose up -d
起動確認

以下にアクセスし、Laravelの初期ページが表示されれば構築成功です。

http://localhost:8080

最後に

当初の目的であった、dockerでLaravel環境構築は達成できました。
これからは、実際に構築したLaravel環境で簡単なアプリケーションを開発してみようと思います。

参考文献