ローカル環境の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