現在メモ程度なので、随時更新する予定。
前提条件
MacOS(IntelCPU)、Dockerインストール済み。
PHPは8、MySQLは8、Laravelは9と最新(現時点で)のバージョンを使う。
ディレクトリ・ファイル構成
.
├── docker
│ ├── nginx
│ │ └── default.conf.ini
│ ├── php
│ │ ├── Dockerfile
│ │ └── php.ini
├── docker-compose.yml
└── (Laravelのアプリケーションディレクトリ)
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:8.0
container_name: db
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/Dockerfile
FROM php:8.1.9-fpm
COPY php.ini /usr/local/etc/php/
RUN apt-get update && apt-get install -y \
zlib1g-dev \
libzip-dev \
vim \
&& docker-php-ext-install zip pdo_mysql opcache
WORKDIR /var/www
COPY --from=composer /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
RUN composer global require "laravel/installer"
php/php.ini
[Date]
#タイムゾーンの設定
date.timezone = "Asia/Tokyo"
[mbstring]
#文字コードの設定
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
nginx/default.conf
server {
listen 80;
root /var/www/eve/public;
index index.php;
location / {
root /var/www/eve/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;
}
}
Laravelインストール(=プロジェクト作成)
アプリのコンテナに入ります。コンテナ起動していない場合は先にしておいてください。
docker compose exec app bash
以下のコマンドを実行します。
composer create-project --prefer-dist laravel/laravel 【プロジェクト名】 "9.*"
ほか注意点など
設定ファイルなど更新したら、Dockerをリビルドするようにしましょう。
↓参考
https://desuto.net/docker-build-image-no-cache/