[Laravel] DockerでLaravel環境を作る

Docker

常駐先社長「APIをFuelから他のFWにするけどどうする?PythonでもJavaでもなんでもいいよ」
自分「え!・・・・」
(ここの会社ほとんどPHPしかやってないじゃんか・・・知見ないとなんかあったらめんどいよな・・・)
自分「Laravelでよくないっすか?」
常駐先社長「じゃあLaravelでいっか。よろしく」

というわけでFuel PHPというFWを使っていたがPHPのバージョンが古いのでLaravelに移行した時のメモ。ディレクトリはこんな感じ。

ディレクトリ構成

docker-compose.ymlをこんな感じで作成

version: '3.8'

services:
  php-apache:
    container_name: php8.1-apache
    build:
      context: ./php
    ports:
        - '21280:80'
    volumes:
      - ./src:/var/www/api
      - ./apache/default.conf:/etc/apache2/sites-enabled/000-default.conf
      - ./apache/logs:/var/log/httpd
    depends_on:
      - mysql
    networks:
      - app-net
  # mysqlサーバ
  mysql:
    container_name: pj-mysql
    image: mysql:5.7
    # M1,M2macの場合
    # platform: linux/amd64
    #command:
    #  - --sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY"
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=db_name
      - MYSQL_USER=db_user
      - MYSQL_PASSWORD=password
    volumes: 
      - ./mysql/volumes:/var/lib/mysql
      - ./mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
      - ./mysql/data:/data
      - ./mysql/init.d:/docker-entrypoint-initdb.d
    ports:
      - "23507:3306"
    networks:
      - app-net

networks:
  app-net:
    driver: bridge

php/Dockerfile

FROM php:8.1-apache

  RUN apt-get update \
    # unzip (composer create-project で必要)
    && apt-get install -y unzip \
    # Vim 
    && apt-get install -y vim \
    # PHP BCMath
    && docker-php-ext-install bcmath \
    # PHP GD
    && apt-get install -y zlib1g-dev libpng-dev libfreetype6-dev libjpeg62-turbo-dev libjpeg-dev \
    && docker-php-ext-configure gd --with-jpeg \
                                  --with-freetype\
    && docker-php-ext-install -j$(nproc) gd \
    # PHP intl
    && apt-get install -y libicu-dev \
    && docker-php-ext-install intl \
    # PHP  zip
    && apt-get install -y \
                libzip-dev \
                zip \
    && docker-php-ext-install zip \
    # PHP PDO MySQL
    && docker-php-ext-install pdo_mysql \
    && apt-get install -y sudo less default-mysql-client \
    # cron intl
    && apt-get install -y cron \
    # mod_rewrite 有効化
    && a2enmod rewrite
WORKDIR /var/www/api

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

dockerを立ち上げてphpのコンテナに入ります

docker container exec -it php8.1-apache bash

コンテナに入ったらLaravelのアプリを作成します。ドットでカレンとディレクトリに作成します。

composer create-project laravel/laravel .

php/DockerfileにはLaravel-Excel使うんで色々書いてますがもっとミニマルでもよいかもです。
MySQLは8にした方がいいですね。

コメント

タイトルとURLをコピーしました