1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel開発環境をDockerを使って構築する(LEMP環境)

Posted at

今回はDocker, docker-composeを使ってローカルに以下の環境を構築します。(LEMP環境)

Laravel 8.0
PHP 8.0
Nginx
MySQL 5.7

前提条件
Macbook Air M2 バージョン 14.0
iTerm2 使用
Docker がローカルにインストールされている
Docker Compose がローカルにインストールされている


今回はiTerm2で行います

プロジェクト用のディレクトリ作成

名前はなんでもいいですが、laravel_dockerという名前の新しいディレクトリを作成しました。

mkdir laravel_docker
cd laravel_docker

環境構築用のディレクトリ作成

laravel_docker内に以下のような構造で作成していきます。
スクリーンショット 2023-09-30 23.20.50.png

:star:docker-compose.yml

laravel_docker内にdocker-compose.ymlファイルを作成します。

touch docker-compose.yml

docker-compose.ymlを開いて編集します。

vim docker-compose.yml
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:5.7
    container_name: db
    platform: linux/amd64
    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

:star:php > php.iniファイルの設定

laravel_docker内にdockerディレクトリを作成します。

mkdir docker
cd docker

dockerディレクトリ内にphpをディレクトリを作成
phpディレクトリ内にphp.iniをファイル作成

mkdir php && cd php
touch php.ini

php.iniの設定

php.iniは、phpの設定ファイルです。

php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
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

php > Dockerfileの設定

phpディレクトリ内にDockerfileファイルを作成

touch Dockerfile
Dockerfile
FROM php:8.0-fpm
COPY php.ini /usr/local/etc/php/

RUN apt-get update \
  && apt-get install -y zlib1g-dev mariadb-client vim libzip-dev \
  && docker-php-ext-install zip pdo_mysql

#Composer install
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer

ENV COMPOSER_ALLOW_SUPERUSER 1

ENV COMPOSER_HOME /composer

ENV PATH $PATH:/composer/vendor/bin


WORKDIR /var/www

RUN composer global require "laravel/installer"

nginx > default.confの設定

dockerディレクトリ内にnginxディレクトリを作成
nginxディレクトリ内にdefault.confファイル作成

mkdir nginx && cd nginx
touch default.conf
default.conf
server {
  listen 80;
  root /var/www/laravel-project/public;
  index index.php;
  location / {
    root /var/www/laravel-project/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;
  }
}

コンテナの立ち上げ

docker-compose up -d

コンテナが立ち上がっているかの確認

docker-compose ps

以下のように全てのコンテナのStateがUpになっていたらOK!
スクリーンショット 2023-09-30 23.08.50.png


参考

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?