🐷

Docker + Laravel + PostgreSQL + Apache の開発環境を構築する

2022/06/27に公開

構築環境

  • PHP 8.0
  • Laravel 最新バージョン
  • PostgreSQL 14.4
  • Apache 2.4.53

ファイル

ファイル構成

docker-compose
├── apache
│   └── default.conf
├── php
│   └── Dockerfile
├── src // ソースコード格納用ディレクトリ
└── docker-compose.yml

Dockerfile

Dockerfile
FROM php:8.0-apache

RUN apt update && apt install -y zlib1g-dev g++ libicu-dev zip libzip-dev zip libpq-dev \
    && docker-php-ext-install intl opcache pdo pgsql pdo_pgsql \
    && pecl install apcu \
    && docker-php-ext-enable apcu \
    && docker-php-ext-configure zip \
    && docker-php-ext-install zip \
    && apt-get install -y git \
    && a2enmod rewrite


WORKDIR /var/www/html

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

default.conf

default.conf
<VirtualHost *:80>
   ServerName laravel_sample
   DocumentRoot /var/www/html/public

   <Directory /var/www/html>
       AllowOverride All
   </Directory>
   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

docker-compose.yml

docker-compose.yml
version: '3.8'

services:
  database:
    image: postgres
    container_name: database
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: laravel_sample
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    ports:
      - '5432:5432'

  php:
    container_name: php
    build:
      context: ./php
    ports:
      - '8080:80'
    volumes:
      - ./src:/var/www/html
      - ./apache/default.conf:/etc/apache2/sites-enabled/000-default.conf
    depends_on:
      - database

手順

ファイル作成後の手順
docker-composeディレクトリでコンテナをビルド

docker-compose up -d --build

コンテナに入る

docker-compose exec php bash

Laravelのアプリケーションを作成(既存の作成中のものがあればgit cloneする)

composer create-project laravel/laravel .

laravelのプロジェクトを作成すると以下からLaravelのウェルカムページが表示されます。
http://localhost:8080/

composer install

.env作成

cp .env.example .env

.envのAPP_KEY作成

php artisan key:generate

.envのDBに設定

DB_CONNECTION=pgsql
DB_HOST=database
DB_PORT=5432
DB_DATABASE=laravel_sample
DB_USERNAME=postgres
DB_PASSWORD=secret

マイグレーション実行

php artisan migrate

参考にした記事

Discussion