今回はDocker, docker-composeを使ってローカルに以下の環境を構築します。(LEMP環境)
Laravel 8.0
PHP 8.0
Nginx
MySQL 5.7
前提条件
Macbook Air M2 バージョン 14.0
iTerm2 使用
Docker がローカルにインストールされている
Docker Compose がローカルにインストールされている
今回はiTerm2で行います
プロジェクト用のディレクトリ作成
名前はなんでもいいですが、laravel_dockerという名前の新しいディレクトリを作成しました。
mkdir laravel_docker
cd laravel_docker
環境構築用のディレクトリ作成
laravel_docker内に以下のような構造で作成していきます。
docker-compose.yml
laravel_docker内にdocker-compose.yml
ファイルを作成します。
touch docker-compose.yml
docker-compose.ymlを開いて編集します。
vim docker-compose.yml
version: '3'
services:
app:
container_name: app
build: ./docker/php
volumes:
- .:/var/www
nginx:
image: nginx
container_name: nginx
ports:
- 8000:80
volumes:
- .:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
working_dir: /var/www
depends_on:
- app
db:
image: mysql:5.7
container_name: db
platform: linux/amd64
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: db-user
MYSQL_PASSWORD: db-pass
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./docker/db/data:/var/lib/mysql
- ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/db/sql:/docker-entrypoint-initdb.d
ports:
- 3306:3306
php > php.iniファイルの設定
laravel_docker内にdocker
ディレクトリを作成します。
mkdir docker
cd docker
dockerディレクトリ内にphp
をディレクトリを作成
php
ディレクトリ内にphp.ini
をファイル作成
mkdir php && cd php
touch php.ini
php.iniの設定
php.iniは、phpの設定ファイルです。
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
[opcache]
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
php > Dockerfileの設定
phpディレクトリ内にDockerfile
ファイルを作成
touch Dockerfile
FROM php:8.0-fpm
COPY php.ini /usr/local/etc/php/
RUN apt-get update \
&& apt-get install -y zlib1g-dev mariadb-client vim libzip-dev \
&& docker-php-ext-install zip pdo_mysql
#Composer install
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
WORKDIR /var/www
RUN composer global require "laravel/installer"
nginx > default.confの設定
dockerディレクトリ内にnginx
ディレクトリを作成
nginx
ディレクトリ内にdefault.conf
ファイル作成
mkdir nginx && cd nginx
touch default.conf
server {
listen 80;
root /var/www/laravel-project/public;
index index.php;
location / {
root /var/www/laravel-project/public;
index index.php;
try_files $uri $uri/ /index.php$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
コンテナの立ち上げ
docker-compose up -d
コンテナが立ち上がっているかの確認
docker-compose ps
以下のように全てのコンテナのStateがUpになっていたらOK!
参考