マルチリンガルなプログラマーになろう

習うより慣れよう、まずはコピペでOK

DockerでLaravel環境を構築する(+enginx、MySql)

下記を参考にDocker+Laravel環境を構築してみました。

【超入門】20分でLaravel開発環境を爆速構築するDockerハンズオン - Qiita

 

 

プロジェクトフォルダを作成する

書類フォルダの中に、laravelフォルダを作る

 

laravelフォルダをVScodeで開く

 

コンテナの設定をする

Vscodeでターミナルを開く

 

docker-compose.ymlファイルを作成する

touch docker-compose.yml

docker-compose.yml

version: "3.9"
services:

  app:
        container_name: laravel-php
    build: ./infra/php
    volumes:
      - ./src:/data

  web:
        container_name: laravel-nginx
    image: nginx:1.20-alpine
    ports:
      - 8080:80
    volumes:
      - ./src:/data
      - ./infra/nginx/default.conf:/etc/nginx/conf.d/default.conf
    working_dir: /data

  db:
    container_name: laravel-db
    build: ./infra/mysql
    volumes:
      - db-store:/var/lib/mysql

volumes:
  db-store:

PHPの設定をする

infra/php/Dockerfileを作成する

mkdir -p infra/php

touch infra/php/Dockerfile

infra/php/Dockerfile

FROM php:8.1-fpm-buster

ENV COMPOSER_ALLOW_SUPERUSER=1 \
  COMPOSER_HOME=/composer

COPY --from=composer:2.2 /usr/bin/composer /usr/bin/composer

RUN apt-get update && \
  apt-get -y install --no-install-recommends git unzip libzip-dev libicu-dev libonig-dev && \
  apt-get clean && \
  rm -rf /var/lib/apt/lists/* && \
  docker-php-ext-install intl pdo_mysql zip bcmath

COPY ./php.ini /usr/local/etc/php/php.ini

WORKDIR /data

php.iniファイルを作成する

touch infra/php/php.ini

touch infra/php/php.ini

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 = /dev/stderr
default_charset = UTF-8

[Date]
date.timezone = Asia/Tokyo

[mysqlnd]
mysqlnd.collect_memory_statistics = on

[Assertion]
zend.assertions = 1

[mbstring]
mbstring.language = Japanese

srcフォルダを作成する

mkdir src

nginx(Webサーバー)の設定をする

infra/nginx/default.confを作成する

mkdir infra/nginx

touch infra/nginx/default.conf

MySqlの設定をする

infra/mysql/Dockerfileを作成する

mkdir infra/mysql

touch infra/mysql/Dockerfile

infra/mysql/Dockerfile

FROM mysql/mysql-server:8.0

ENV MYSQL_DATABASE=laravel \
  MYSQL_USER=phper \
  MYSQL_PASSWORD=secret \
  MYSQL_ROOT_PASSWORD=secret \
  TZ=Asia/Tokyo

COPY ./my.cnf /etc/my.cnf
RUN chmod 644 /etc/my.cnf

infra/mysql/my.cnfを作成する

touch infra/mysql/my.cnf

infra/mysql/my.cnf

[mysqld]
# default
skip-host-cache
skip-name-resolve
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
secure-file-priv = /var/lib/mysql-files
user = mysql

pid-file = /var/run/mysqld/mysqld.pid

# character set / collation
character_set_server = utf8mb4
collation_server = utf8mb4_ja_0900_as_cs_ks

# timezone
default-time-zone = SYSTEM
log_timestamps = SYSTEM

# Error Log
log-error = mysql-error.log

# Slow Query Log
slow_query_log = 1
slow_query_log_file = mysql-slow.log
long_query_time = 1.0
log_queries_not_using_indexes = 0

# General Log
general_log = 1
general_log_file = mysql-general.log

[mysql]
default-character-set = utf8mb4

[client]
default-character-set = utf8mb4

buildする

docker compose build

処理時間が長いです。

処理が終わった後、Use docker...というメッセージが出れば成功です。

立ち上げる

docker compose up -d

Laravelをインストールする

コンテナの中に入る

docker compose exec app bash

Laravelをインストールする

composer create-project --prefer-dist "laravel/laravel=9.*" .

処理時間が長いです。

Application key set successfullyというメッセージが出たら成功です。

Laravelがインストールできたか確認する

下記にアクセスし、Laravelの画面が表示されれば無事にインストール完了です。

http://localhost:8080/

 

お疲れさまでした。

以上です。