LoginSignup
1
5

More than 5 years have passed since last update.

Mac OS X に Docker & nginx + Laravel + MySQL 環境構築

Posted at

Laravel

PHP を利用して composer install する

$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
$ composer -V

laravel new するときにパッケージが古くてエラーになる場合があるので更新しておく

$ composer global update

Laravel のプロジェクトを作る
https://readouble.com/laravel/5.6/ja/installation.html

$ laravel new [project]

プロジェクト名のディレクトリが作成されてその中に Laravel がインストールされる

Docker

nginx + MySQL (+ phpMyAdmin) の docker-compose.yml を作成する

作成したプロジェクトディレクトリをルートとしたサンプル

docker-compose.yml
version: '3'
services:
  web:
    image: nginx:1.13.5-alpine
    ports:
      - "80:80"
    depends_on:
      - app
    volumes:
      - ./default.conf:/etc/nginx/conf.d/default.conf
      - ./:/var/www/html #laravel projectディレクトリ配下をマウント
  app:
    build: ./ #同じディレクトリの Dockerfile image:設定を使う
    env_file: .env
    depends_on:
      - db
    volumes:
      - ./:/var/www/html
  db:
    image: mysql:5.7.19
    env_file: .env
    environment: #.env のDB設定を共有して構築
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USERNAME}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
    ports:
      - "3306:3306"
    volumes:
      - db-data:/var/lib/mysql
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "8080:80" #localhost:8080 で phpMyAdmin にアクセスできる
    links:
      - db:mysql

volumes:
  db-data: #DB の永続化
Dockerfile
FROM php:7.1.9-fpm-alpine #app サービスで使う php image:

RUN docker-php-ext-install pdo_mysql mysqli mbstring

nginx の設定

services:web:volumes で指定したパスに作成する

プロジェクトディレクトリ直下のサンプル

default.conf
server {
    listen 80;
    server_name _;

    root  /var/www/html/public; #laravel index.php の場所は public 配下
    index index.php;

    access_log /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;

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

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(\.+)$;
        fastcgi_pass app: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
1
5
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
1
5