0
2

More than 3 years have passed since last update.

DockerでLaravelの開発環境を構築する方法

Posted at

docker.png

本記事ではLaradockを使わずにできるだけシンプルにLaravelの環境構築を行っていきます。

任意の場所にディレクトリを作成

$ mkdir myproject
$ cd myproject

docker-compose.ymlファイルの作成

docker-compose.yml
version: '3.7'

services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: php
    volumes:
      - ./src:/var/www/html
    ports:
      - "9000:9000"
  mysql:
    image: mysql:5.7
    container_name: mysql
    ports:
      -  "3306:3306"
    volumes:
      -  ./db:/var/lib/mysql
      -  ./my_conf:/etc/mysql/conf.d
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: laravel
  nginx:
    image: nginx:stable-alpine
    container_name: nginx
    ports:
      -  "8080:80"
    volumes:
      -  ./src:/var/www/html
      -  ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      -  php
      -  mysql

Dockerfileの作成

Dockerfile
FROM php:7.4-fpm-alpine

RUN docker-php-ext-install pdo pdo_mysql

Volumesの作成

$ mkdir db
$ mkdir my_conf

my_confディレクトリにmysql5.7.cnfを作成し、日本語対応できるように文字コードの設定を行います。

mysql5.7.cnf
[mysqld]
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

Nginxの設定ファイルを作成

$ mkdir nginx

nginxディレクトリにdefault.confを作成します。

default.conf
server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

コンテナの作成

$ docker-compose up -d

コンテナのステータスを確認

$ docker-compose ps -a

Laravelのインストール

$ docker run --rm -v /src:/app composer create-project --prefer-dist laravel/laravel .

データベースへの接続

srcディレクトリ内にある.envファイルを下記の通り編集してください。

.env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=password

.envファイルの設定が終わったら、下記のコマンドを実行してデータベースにテーブルが作成されるか確認します。

$ docker-compose exec php php artisan migrate

開発サーバの起動

$ docker exec -it php php artisan serve --host=0.0.0.0 --port=8000

上記のコマンドを実行後、ブラウザで127.0.0.1:8080にアクセスするとLaravelのスタートページが表示されます。

img1.png

これでLaravelにNginx経由でアクセスし、MySQLデータベースへのデータの登録まで行えることを確認しました。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2