🐷
Docker + Laravel + PostgreSQL + Apache の開発環境を構築する
構築環境
- 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のウェルカムページが表示されます。
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