下記を参考にDocker+Laravel環境を構築してみました。
【超入門】20分でLaravel開発環境を爆速構築するDockerハンズオン - Qiita
- プロジェクトフォルダを作成する
- コンテナの設定をする
- PHPの設定をする
- nginx(Webサーバー)の設定をする
- MySqlの設定をする
- infra/mysql/my.cnfを作成する
- buildする
- 立ち上げる
- Laravelをインストールする
プロジェクトフォルダを作成する
書類フォルダの中に、laravelフォルダを作る
laravelフォルダをVScodeで開く
コンテナの設定をする
Vscodeでターミナルを開く
docker-compose.ymlファイルを作成する
touch docker-compose.yml
docker-compose.yml
version: "3.9"
services:
app:
container_name: laravel-php
build: ./infra/php
volumes:
- ./src:/data
web:
container_name: laravel-nginx
image: nginx:1.20-alpine
ports:
- 8080:80
volumes:
- ./src:/data
- ./infra/nginx/default.conf:/etc/nginx/conf.d/default.conf
working_dir: /data
db:
container_name: laravel-db
build: ./infra/mysql
volumes:
- db-store:/var/lib/mysql
volumes:
db-store:
PHPの設定をする
infra/php/Dockerfileを作成する
infra/php/Dockerfile
FROM php:8.1-fpm-buster
ENV COMPOSER_ALLOW_SUPERUSER=1 \
COMPOSER_HOME=/composer
COPY --from=composer:2.2 /usr/bin/composer /usr/bin/composer
RUN apt-get update && \
apt-get -y install --no-install-recommends git unzip libzip-dev libicu-dev libonig-dev && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
docker-php-ext-install intl pdo_mysql zip bcmath
COPY ./php.ini /usr/local/etc/php/php.ini
WORKDIR /data
php.iniファイルを作成する
zend.exception_ignore_args = off
expose_php = on
max_execution_time = 30
max_input_vars = 1000
upload_max_filesize = 64M
post_max_size = 128M
memory_limit = 256M
error_reporting = E_ALL
display_errors = on
display_startup_errors = on
log_errors = on
error_log = /dev/stderr
default_charset = UTF-8
[Date]
date.timezone = Asia/Tokyo
[mysqlnd]
mysqlnd.collect_memory_statistics = on
[Assertion]
zend.assertions = 1
[mbstring]
mbstring.language = Japanese
srcフォルダを作成する
mkdir src
nginx(Webサーバー)の設定をする
infra/nginx/default.confを作成する
mkdir infra/nginx
touch infra/nginx/default.conf
MySqlの設定をする
infra/mysql/Dockerfileを作成する
infra/mysql/Dockerfile
ENV MYSQL_DATABASE=laravel \
MYSQL_USER=phper \
MYSQL_PASSWORD=secret \
MYSQL_ROOT_PASSWORD=secret \
TZ=Asia/Tokyo
COPY ./my.cnf /etc/my.cnf
RUN chmod 644 /etc/my.cnf
infra/mysql/my.cnfを作成する
touch infra/mysql/my.cnf
infra/mysql/my.cnf
[mysqld]
# default
skip-host-cache
skip-name-resolve
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
secure-file-priv = /var/lib/mysql-files
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
# character set / collation
character_set_server = utf8mb4
collation_server = utf8mb4_ja_0900_as_cs_ks
# timezone
default-time-zone = SYSTEM
log_timestamps = SYSTEM
# Error Log
log-error = mysql-error.log
# Slow Query Log
slow_query_log = 1
slow_query_log_file = mysql-slow.log
long_query_time = 1.0
log_queries_not_using_indexes = 0
# General Log
general_log = 1
general_log_file = mysql-general.log
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
buildする
docker compose build
処理時間が長いです。
処理が終わった後、Use docker...というメッセージが出れば成功です。
立ち上げる
docker compose up -d
Laravelをインストールする
コンテナの中に入る
docker compose exec app bash
Laravelをインストールする
composer create-project --prefer-dist "laravel/laravel=9.*" .
処理時間が長いです。
Application key set successfullyというメッセージが出たら成功です。
Laravelがインストールできたか確認する
下記にアクセスし、Laravelの画面が表示されれば無事にインストール完了です。
お疲れさまでした。
以上です。