Laravelで簡単なCMSを作成(環境構築)


Laravelの開発環境をdockerを使ってnginx + php + sqliteの構成で作ってみます。

docker-composeで管理

ディレクトリ構成は以下です。srcディレクトリ配下にはLaravelのコードがインストールされます。

.
├── docker
│   ├── nginx
│   │   └── default.conf
│   └── php
│       ├── Dockerfile
│       └── php.ini
│
├── docker-compose.yml
└── src

docker-composeでコンテナを管理します。

docker-compose.yml
version: '3'
services:
  nginx:
    image: nginx
    ports:
      - 8080:80
    volumes:
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./src:/var/www
    depends_on:
      - php
  php:
    build: ./docker/php
    volumes:
      - ./src:/var/www

nginxの設定

default.conf
server {

    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    server_name localhost;
    root /var/www/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }
}

phpコンテナ

Dockerfile
FROM php:7.3-fpm

ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
#Composer install
COPY --from=composer /usr/bin/composer /usr/bin/composer

RUN apt-get update &&\
    apt-get install -y libzip-dev &&\
    docker-php-ext-configure zip --with-libzip && \
    # Install the zip extension
    docker-php-ext-install zip && \
    docker-php-ext-install pdo_mysql

COPY php.ini /usr/local/etc/php/

WORKDIR /var/www
php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

コンテナ起動

docker-compose.ymlファイルが置いてある場所でdocker-compose upを実行するとコンテナが起動します。バックグラウンドで起動するために-dも付けて起動させます。

docker-compose up -d

Laravelインストール

コンテナが起動できたらLaravelをインストールするために、phpコンテナに入ります。

# docker-compose exec php bash

phpコンテナに入れたらLaravelをインストールします。

# composer create-project laravel/laravel .

.env.example.envにリネームします。

cp .env.example .env

アプリケーションキーを作成します。

php artisan key:generate

インストールが完了したら、http://localhost:8080にアクセスして環境が正しく構築出来ているか確認します。下の画像のように表示できていればOKです。

SQLiteの設定

laravel/database 配下に database.sqlite というファイルを作成します。次に.envファイルをsqliteを使用するために修正します。

.env
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
# DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

これで設定は終わりです。

作成したデータベースにデータを登録する場合は、以下の記事を参考に。