これでたぶん大丈夫なはず・・・
説明はそのうち追記するかもしれない。
Docker上で動作しているので、npm install を実行するときは以下のようにする必要があります。
npm install --no-bin-links
docker-compose.yml
version: '3'
services:
app:
build: .
image: sample_app
container_name: sample_app
ports:
- "3000:80"
volumes:
- ..:/var/www/html
- ./php.ini:/usr/local/etc/php/php.ini
db:
image: mysql:8.0
container_name: mysql8.0_db
ports:
- "3306:3306"
volumes:
- "dbdata:/var/lib/mysql"
- ./my.cnf:/etc/mysql/conf.d/my.cnf
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: sample_db
MYSQL_USER: sample_user
MYSQL_PASSWORD: password
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
volumes:
dbdata:
Dockerfile
FROM php:7.4-apache
RUN cp -p /usr/share/zoneinfo/Japan /etc/localtime
RUN apt-get update
RUN apt-get install -y build-essential git libzip-dev unzip
RUN docker-php-ext-install zip pdo_mysql
RUN pecl install xdebug docker-php-ext-enable xdebug
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
COPY --from=node:latest /usr/local/bin/ /usr/local/bin/
COPY --from=node:latest /usr/local/lib/node_modules /usr/local/lib/node_modules
RUN a2enmod rewrite
php.ini
[PHP]
[Date]
date.timezone = "Asia/Tokyo"
[xdebug]
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_port=9000
xdebug.remote_host=host.docker.internal
xdebug.remote_log=/tmp/xdebug.log
xdebug.var_display_max_children = 1280
xdebug.var_display_max_data = 10240
xdebug.var_display_max_depth = 100
php.ini
[mysqld]
# character set / collation
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
# timezone
default-time-zone = SYSTEM
log_timestamps = SYSTEM
# MySQL8 caching_sha2_password to mysql_native_password
default-authentication-plugin = mysql_native_password
# Binary Log
#server-id = 01
#log-bin = /var/log/mysql/mysql-bin.log
#binlog-ignore-db = mysql
#binlog-format = ROW
#expire_logs_days = 7
# Error Log
log-error = /var/log/mysql/mysql-error.log
# Slow Query Log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 5.0
log_queries_not_using_indexes = 0
# General Log
general_log = 1
general_log_file = /var/log/mysql/mysql-query.log
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4