【docker】Laravel8 環境構築

ローカル環境のdockerにLaravel8をインストールして動作させます。

自分用のメモ書きになるので、詳細な説明はしていません。

ホストPCのディレクトリ構成

ディレクトリ構成は以下の通りです。

docker
   -- Dockerfile
   -- vhost.conf
webapp
docker-compose.yml

dockerディレクトリ

Dockerファイル

Dockerファイル(Dockerfile)の内容は以下の通りです。

# イメージ
FROM amazonlinux:2

# バーチャルホストの設定ファイルをコンテナへコピーする
COPY ./docker/vhost.conf /etc/httpd/conf.d/vhost.conf

# バーチャルホスト用のドキュメントルートディレクトリを作成する
RUN mkdir /www-contents

# apacheのインストール
RUN yum -y update
RUN yum -y install httpd

# apacheを自動起動させる
RUN systemctl enable httpd

# コンテナ起動時 (docker run) コマンド
CMD ["/sbin/init"]

バーチャルホスト設定ファイル

Apacheのバーチャルホストを設定するファイル(vhost.conf)の内容は以下の通りです。

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName local.webapp.com
    DocumentRoot /www-contents/webapp/public
    DirectoryIndex index.php
    <Directory "/www-contents/webapp/public">
        Options -Indexes +FollowSymLinks
        AllowOverride all
        Require all granted
    </Directory>
</VirtualHost>

webappディレクトリ

Laravelをインストールするディレクトリになります。

docker-compose.yml

以下の通りです。

version: "3"
services:
  web:
    container_name: container_name
    restart: always
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    privileged: true
    ports:
      - 80:80
    volumes:
      - ./webapp:/www-contents/webapp

手順

hostsの設定

127.0.0.1 local.webapp.com

コンテナの生成

docker-compose build
docker-compose up -d

コンテナログイン

docker-compose exec web /bin/bash

PHPのインストール

amazon-linux-extras enable php8.0

Laravelに必要なPHPモジュール

yum install php-cli php-pdo php-fpm php-mysqlnd
yum install php php-mbstring php-openssl php-xml zip unzip

Apache再起動

PHPモジュールを有効にする設定ファイルが自動的に作成されるため、Apacheに再読み込みさせる。

systemctl restart httpd

コンポーザーのインストール

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
mv composer.phar /usr/local/bin/composer
composer -V
rm composer-setup.php

Laravel インストール

cd www-contents
composer create-project laravel/laravel:^8.0 webapp

パーミッションの設定

cd webapp
chmod -R 766 storage/

ブラウザアクセス

http://local.webapp.com

コメントを残す

メールアドレスが公開されることはありません。

© DeNnie.Lab All Rights Reserved.