構築する環境
- PHP8.0
- Apache2
- MySQL8.0.20
- Laraval8
Docker
ディレクトリ構造
プロジェクトフォルダ
┣━ docker
┃ ┣━ MySQL
┃ ┃ ┗━ Dockerfile
┃ ┗ php
┃ ┣━ 000-default.conf
┃ ┣━ Dockerfile
┃ ┗━ php.ini
┗━ docker-compose.yml
- Dockerfile
- 000-default.conf
- Dockerfile
- php.ini
- docker-compose.yml
の4つのファイルを作っていきます。
以下、コピペでOKです。
Dockerfile(MySQL)
FROM mysql:8.0.20
Dockerfile(PHP)
# どんなdockerイメージを利用して構築をするか
FROM php:8.0-apache
RUN cd /etc/apache2/mods-enabled \
&& ln -s ../mods-available/rewrite.load
# 設定ファイルをdockerコンテナ内のPHP、Apacheに読み込ませる
ADD php.ini /usr/local/etc/php/
ADD 000-default.conf /etc/apache2/sites-enabled/
# Composerのインストール
RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer
# ミドルウェアインストール
RUN apt-get update \
&& apt-get install -y \
git \
zip \
unzip \
libzip-dev \
vim \
libpng-dev \
libpq-dev \
libfreetype6-dev \
libjpeg-dev \
libonig-dev \
&& docker-php-ext-install pdo pdo_mysql mysqli zip
RUN docker-php-ext-configure gd \
--with-freetype=/usr/include/ \
--with-jpeg=/usr/include \
&& docker-php-ext-install -j$(nproc) gd
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN composer self-update --2
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN rm -rf node_modules
RUN apt-get install -y nodejs
RUN npm install npm -g n --save-dev cross-env
RUN npm cache clear --force
RUN npm install webpack --save
RUN npm install node-sass --nodedir=/usr/bin/node
WORKDIR /var/www/
000-default.conf
docker/php/000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
php.ini
こちらの記事を参照させていただきました。
docker/php/php.ini
[PHP]
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 = /var/log/php/php-error.log
default_charset = UTF-8
[Date]
date.timezone = Asia/Tokyo
[mysqlnd]
mysqlnd.collect_memory_statistics = on
[Assertion]
zend.assertions = 1
[mbstring]
mbstring.language = Japanese
docker-compose.yml
docker-compose.yml
version: '2'
services:
db:
build: ./docker/mysql
ports:
- "33306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_DATABASE: tsurikomi
volumes:
- ./docker/mysql/data:/var/lib/mysql
- ./docker/mysql/initdb.d:/docker-entrypoint-initdb.d
php:
build: ./docker/php
ports:
- "8080:80"
volumes:
- ./src:/var/www
depends_on:
- db
Docker コンテナのビルドと起動
ビルド
docker compose build
起動
docker compose up
phpコンテナに入る
docker compose exec php bash
Laravel8のインストール
以下、phpコンテナ内でのコマンドです
composer create-project "laravel/laravel=8.*" ./
最後、./
とすればsrcの直下にLaravelのファイル群を作成することができる
php artisan -V
でLaravelのバージョン確認
インストールできているか確認できたら、localhostで動くか確認する
http://localhost:8080/
この画面が出たら成功!
もしエラーが出たら、この辺の記事を参考に。
最後に
この後、プロジェクトを進める手順をまとめる予定です。
ポートフォリオを作りながらちょくちょく進めていきます。