LoginSignup
8
5

More than 1 year has passed since last update.

DockerからLaravel環境構築メモ 〜PHP8.0 Apache2 MySQL8.0.20〜

Last updated at Posted at 2022-01-25

構築する環境

  • 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/

スクリーンショット 2022-01-25 23.15.39.png

この画面が出たら成功!

もしエラーが出たら、この辺の記事を参考に。

最後に

この後、プロジェクトを進める手順をまとめる予定です。

ポートフォリオを作りながらちょくちょく進めていきます。

8
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5