目的
個人開発をしてみようと思い、インフラは費用を抑えるためにHerokuにしようと考えています。
HerokuではデフォルトのDBがPostgreSQLであることと、docker環境を自ら作成したことがなかったので勉強も兼ねて作成したものを残します。
開発環境
- 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
参考にした記事
- https://www.twilio.com/blog/get-started-docker-laravel-jp
- https://zenn.dev/lightkun/articles/b4ec49bb8bcf0c
おわりに
シンプルな記事を参考にしたのであまり難しく考えず構築することができました。
足りないものもありそうなのでこれから改良していきながら知識を増やそうと思います。
間違っているところなどあれば、ご教示ください。