🧑💻
Docker で、PHP(Laravel)の環境構築をする。
🐳 Dockerfile を新規作成する。
FROM php:8.0.3
# ↓ Composer をインストールする。 ↓
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { 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 をインストールするために、.zip を解凍できるようにする。 ↓
# ↓ Laravel にてアセットコンパイルをするために、Node.js をインストールする。 ↓
RUN curl -fsSL https://deb.nodesource.com/setup_15.x | bash \
&& apt-get update && apt-get install -y zip unzip nodejs
WORKDIR /var/www/'アプリケーション名'
CMD ["php", "artisan", "serve", "--host", "0.0.0.0"]
-
FROM php:8.0.3
で、Docker Hub から、PHP を導入する。
※ 現在の最新バージョンであるPHP Version 8.0
を使用する。
※ 不意なバージョン・アップを防ぐため、Latest は使用していません。 - Composer をインストールする。
- この後、Laravel をインストールするために .zip を解凍できるようにし、開発において .scss をアセットコンパイルするために必要になる Node.js を導入しておく。
- 最後に作業用のアプリケーションディレクトリを指定する。
🐳 docker-compose.yml を新規作成する。
version: '3.9'
services:
'サービス名':
build: .
container_name: 'コンテナ名'
volumes:
- 'ローカル環境に同期しておくディレクトリへのパス':'Docker 内のアプリケーションディレクトリへのパス'
ports:
- '8000:8000'
# サーバーを起動したときに使用するポート
tty: true
# 起動直後に終了させずに立ち上げ続けるために記述しておく。
depends_on:
- db
'サービス名':
image: mysql:8.0.23
container_name: 'コンテナ名'
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
volumes:
- 'ローカル環境に同期しておくディレクトリへのパス':/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: '値'
TZ: 'Asia/Tokyo'
# MySQL 内のタイムゾーンを指定する。
📦 Docker コンテナを起動させてから…
-
$ composer create-project 'laravel/laravel=6.*' --prefer-dist 'アプリケーション名'
を実行して、Laravel をインストールする。
※ 最新版の Laravel をインストールする場合は、'laravel/laravel=6.*'
は記述しない。
※--prefer-dist
オプションを付与すると、Git ではなく、.zip でダウンロードされる。Git でダウンロードするよりも高速らしい。
.env
を編集する。
🔑 アプリケーションディレクトリ内に生成される /.env
を編集します。
特に、 DB_HOST
の値に要注意しましょう。
APP_NAME='アプリケーション名'
DB_CONNECTION=mysql
DB_HOST='docker-compose.yml で設定した MySQL のサービス名'
DB_DATABASE='データベース名'
DB_USERNAME=root
DB_PASSWORD='docker-compose.yml で設定した MySQL のパスワード'
app.php
を編集する。
⚙️ アプリケーションディレクトリ内に生成される /config/app.php
を以下のように編集します。
-
'timezone'
を、'timezone' => 'Asia/Tokyo'
に変更する。 -
'locale'
を、'locale' => 'ja'
に変更する。
Discussion