search
LoginSignup
44

More than 3 years have passed since last update.

posted at

updated at

Laravel+MySQL+NginxでさくっとDocker開発立ち上げる

Laravel環境をDockerで作りました。
よく使われている環境はありますが、シンプルにやりたかったので自前でdocker-composeしています。

ファイル構成イメージ

.
├── Dockerfile
├── docker-compose.yml
├── etc
│   └── nginx
│       └── conf.d
│           └── default.conf
└── laravel

docker-compose.yml

docker-compose.yml
version: "2"

services:
  nginx:
    image: nginx:alpine
    volumes:
      - ./etc/nginx/conf.d/:/etc/nginx/conf.d/
      - ./laravel/public:/var/www/laravel/public
    ports:
      - 80:80
    links:
      - phpfpm
    depends_on:
      - phpfpm
  phpfpm:
    build:
      context: .
      dockerfile: ./Dockerfile
    volumes:
      - ./laravel:/var/www/laravel
    links:
      - mysql
    depends_on:
      - mysql
    environment:
      - DB_HOST=mysql
      - DB_DATABASE=wakana
      - DB_USERNAME=root
      - DB_PASSWORD=pass
  mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=pass
      - MYSQL_DATABASE=wakana

Mysqlのバージョンが5.7なのは、8だとめんどくさいエラーでるからです。

めんどくさいエラー
   Illuminate\Database\QueryException  : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client

Dockerfile

Dockerfile
FROM php:7.2-fpm-alpine

RUN docker-php-ext-install pdo_mysql

PHPはメンテコストを考え現在(2018/05/09現在)latestの7.2に固定していますがお好きなので大丈夫です。
phpfpmにpdo_mysql入ってないので別にDockerfile作成しインストールしてあげます。

Nginx

nginxコンテナに共有する./etc/nginx/conf.dに置くファイルです。
普通にららべる向けの設定を書けばOKです。

default.conf
server {
    listen       0.0.0.0:80;
    server_name  localhost;
    charset      utf-8;

    root /var/www/laravel/public;

    index index.php;

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

    location ~ \.php$ {
        fastcgi_pass  phpfpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include       fastcgi_params;
    }
}

Docker立ち上げ

docker-compose up -d

どーん!

アプリケーションキー発行、マイグレーションなど

docker-compose exec phpfpm /var/www/laravel/artisan key:generate
docker-compose exec phpfpm /var/www/laravel/artisan migrate

もしくは

docker-compose exec phpfpm /bin/sh

このコマンドで中入れるのでlaravelフォルダ内で作業します。

cd /var/www/laravel/

php artisan key:generate
php artisan migrate

アクセス

こんにちわんこ!
http://localhost/

スクリーンショット 2018-05-09 13.28.49.png

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
What you can do with signing up
44