DockerでPHP7.4のLaravel開発環境を作成

2021年2月19日金曜日

Docker Laravel PHP

t f B! P L

PHP7.4のLaravel開発環境を、Docker-Composeで作って、Laravelの新規プロジェクトを作成して起動してみるところまで確認してみます。

スポンサーリンク

環境

この記事を書くにあたって使用した環境です。どれも、2020年7月時点の最新バージョンを使用しているハズ。

名称 バージョン
docker 19.03.1
docker-compose 1.24.1
PHP 7.4
Apache 2.4.38
Laravel 7.21.0

フォルダ構成

今回は、次のようなフォルダ構成にします。

[Project_ROOT]
├ docker
│ └ web
│   ├ apache
│   │ └ 000-default.conf
│   ├ php
│   │ └ php.ini
│   └ Dockerfile	
├ mysql
│ ├ data
│ └ initdb
└ docker-compose.yml

docker-compose.yml

version : "3"
services:
  web:
    container_name: web
    build: ./docker/web
    ports:
      - 80:80
    privileged: true
    volumes:
      - ./server:/var/www/html
  
  db:
    image: mariadb
    restart: always
    ports:
      - 3307:3306
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/initdb:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_ROOT_PASSWORD=pwd
      - MYSQL_DATABASE=test
      - MYSQL_USER=user
      - MYSQL_PASSWORD=pwd

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

スポンサーリンク

Dockerfile (PHP+Apache)

docker/webにwebコンテナ 構築用の「Dockerfile」を作成します。
PHP+Apacheのイメージをベースに、各種ライブラリとComposer、Laravelをインストールします。

FROM php:7.4-apache
COPY ./php/php.ini /usr/local/etc/php/
COPY ./apache/*.conf /etc/apache2/sites-enabled/

RUN apt-get update \
  && apt-get install -y zlib1g-dev libpq-dev mariadb-client unzip libzip-dev\
  && docker-php-ext-install zip pdo_mysql mysqli \
  && docker-php-ext-enable mysqli

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin

WORKDIR /var/www/html

RUN composer global require "laravel/installer"

PHP libzip-dev

php.ini

PHPの設定ファイルを作成します。

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

Apacheの設定ファイル

Apacheのポートや、ドキュメントルートなど、最低限の設定を行います。

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/public
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Dockerコンテナの起動

各種ファイルの準備ができたら、次のコマンドを使用してDockerコンテナを起動します。最初は400MB近いファイルがダウンロードされ時間がかかるので、気長に待ちます。

$ docker-compose up -d

Laravelプロジェクトの作成

webのコンテナ にシェルでログインして、Laravelの新規プロジェクトを作成します。

Laravel
スポンサーリンク

QooQ