Contents
Docker環境の構築
最終的なディレクトリ構成
結果としては以下のようなディレクトリ構成となります。
laravel
∟ _html
∟laravel ※Laravelのプロジェクト
∟ _httpd
∟default.conf
∟localhost-key.pem
∟localhost.pem
∟ _php
∟Dockerfile
∟php.ini
∟ _mysql
プロジェクトディレクトリの作成
$ vi mkdir laravel
$ cd laravel
$ mkdir _html && mkdir _httpd && mkdir _php && mkdir mysql
docker-compose.ymlファイルの作成
$ vi docker-compose.yml
version: '3'
services:
php:
build: ./_php
volumes:
- ./_php/php.ini:/usr/local/etc/php/php.ini
- ./_httpd/conf:/etc/apache2/sites-enabled
- ./_html:/var/www/html
ports:
- 80:80
- 443:443
depends_on:
- mysql
- mailcatcher
links:
- mysql
mysql:
image: mysql:5.6
ports:
- 3306:3306
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=todo
- MYSQL_USER=todo
- MYSQL_PASSWORD=todo
mailcatcher:
image: schickling/mailcatcher
ports:
- "1080:1080"
- "1025:1025"
PHP apacheのDockerfileを作成
$ cd _php
$ vi Dockerfile
FROM php:7.4-apache
COPY php.ini /usr/local/etc/php/
# Composerのインストール
RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer
# ミドルウェアインストール
RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
vim \
libpng-dev \
libpq-dev \
&& docker-php-ext-install pdo_mysql
# Enable SSL
RUN a2enmod ssl
RUN ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf
EXPOSE 443
ENV COMPOSER_ALLOW_SUPERUSER 1
# Laravelで必要になるmodRewriteを有効化する
RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
RUN /bin/sh -c a2enmod rewrite
php.iniファイルの作成
$ vi php.ini
date.timezone = "Asia/Tokyo"
memory_limit = 256M
ここには必要なphpの設定を記載しましょう。
Webサーバーの設定ファイルを作成
$ cd _html
$ vi default.conf
<VirtualHost *:80>
ServerName localhost
DirectoryIndex index.php index.html
DocumentRoot /var/www/html/laravel/public
ErrorLog /var/log/apache2/virtual_error_log
CustomLog /var/log/apache2/virtual_access_log combined env=!no_log
<Directory "/var/www/html/laravel/public">
Require all granted
AllowOverride All
Options +FollowSymLinks -Indexes
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName localhost
DirectoryIndex index.php index.html
DocumentRoot /var/www/html/laravel/public
SSLEngine on
SSLCertificateFile /etc/apache2/sites-enabled/localhost.pem
SSLCertificateKeyFile /etc/apache2/sites-enabled/localhost-key.pem
ErrorLog /var/log/apache2/sslvirtual_error_log
CustomLog /var/log/apache2/sslvirtual_access_log combined env=!no_log
<Directory "/var/www/html/laravel/public">
Require all granted
AllowOverride All
Options +FollowSymLinks -Indexes
</Directory>
</VirtualHost>
ssl証明書の作成
$ mkcert localhost
ルートディレクトリに移動、dockerのビルド、起動
$ cd ..
$ pwd
$ laravel
$ docker compose up -d
[+] Running 3/3
⠿ Container laravel_todo_mailcatcher_1 Running
⠿ Container laravel_todo_mysql_1 Running
⠿ Container laravel_todo_php_1 Started
Laravelのインストール
コンテナにログイン
$ docker compose exec php bash
# composer create-project laravel/laravel laravel
ブラウザで localhostにアクセス
laravelの表示ができていればOKです。
http://localhost or https://localhost

表示されない場合は、一度コンテナを停止、起動してください。
$ docker compose stop
$ docker compose up -d
スポンサーリンク
スポンサーリンク