限りなく簡単に!Dockerを利用してLaravelが動くところまでを構築!


目的

Dockerを利用して、Laravel PHPのWelcome画面表示までを行います!
開発環境での利用を想定しています。セキュリティ的に配慮する点が多数ありますので、間違っても本番サーバでそのまま利用することは控えてください!

想定する読者

  • とりあえずLaravelが動くところを見たい方
  • ストレスなくLaravel PHPの開発環境を整えたい方
  • Dockerを使いたいけど、どう使えば良いかわからない方

前提

OS : Mac OS EL Capitan
インストールしてあるもの :
Docker for Mac
※DockerがインストールされているWindows10やLinux系OSでも動作するはずです。
gitコマンド

GitHubにファイル一式あります。

デスクトップを動画キャプチャしたら本当に5分でした!

動画解説クリック→

構築手順

いよいよ、構築します。ほとんどコマンドラインでの作業です。

作業場所

参考までに当方は
/Users/{$user}/Documents/workspace
というフォルダで作業しています。

注意

Mac OSやLinuxであればどこでも大丈夫なはずですが、Windows10の場合はユーザ直下のフォルダで作業しましょう。DockerがPC上のフォルダをマウントするときにユーザ直下であれば何も設定せずに利用することが可能です!

実行

gitからcloneする
$ git clone [email protected]:RyosukeKamei/laravel-alpine.git
laravel-alpineに移動
$ cd laravel-alpine

PHPのパッケージマネージャComposerをインストールします。
すでにインストールしてある場合は不要です。

Composerをインストール
$ curl -sS https://getcomposer.org/installer | php

【補足】
Composer.pharはパスが通っているところに移動させてもよいです。

Composerのインストールを確認
$ php composer.phar --version

いよいよLaravelをインストールします。
"project"は任意の名前にしますが、一旦このままprojectにしてください。
名称を変えたい場合は、この記事の最後で説明をしています。

Laravelをprojectという名前でインストール
$ php composer.phar create-project laravel/laravel project --prefer-dist

もし、GitHubでアクセストークを取得し設定していない場合は、Laravelインストール中に

もし、GitHubでアクセストークを取得し設定していない場合
Token (hidden): 

と聞かれます。その度にEnterしても良い(面倒です…)のですが、事前にGitHubでアクセストークンを取得し、下記を実行しておくと聞かれなくなります。
トークンはGitHubのアカウントを取得すると作成することができます。詳細はここでは割愛します。
(トークンを設定するのは、GitHub側の不正アクセス防止策です。)

(必要に応じて)トークンを設定
$ php composer.phar config --global github-oauth.github.com {GitHubで取得したトークン}

続いて、Dockerを利用して、アプリコンテナ・データベースコンテナ・データコンテナを作成します。

Dockerコンテナを作成し起動する
$ docker-compose up -d
コンテナ起動を確認
$ docker ps -a

ブラウザで確認で確認してみましょう!
http://192.168.99.100/

プロジェクト名を変えたい場合

このままだとプロジェクト名がprojectのままです。

フォルダ名を変更します。

docker-compose.ymlの46行目にあるビルドインサーバの設定を変更します。
working_dir: /var/www/html/project/public

working_dir: /var/www/html/{ここをフォルダ名と同じにする}/public

参考

docker-compose.yml
# dataコンテナ
# 最近の主流ではない?
data:
  container_name: Alpine-data
  image: alpine
  stdin_open: true
  tty: false
  # docker-composeを実行するフォルダをマウントする
  volumes:
    - .:/var/www/html
  command: /bin/sh

# mysql
# MySQLはmy.cnfを追加したカスタム版
db:
  container_name: Alpine-MySQL-db
  build: ./docker/mysql
  volumes_from:
    - data
  ports:
    - "3306:3306"
  environment:
    # MySQLのrootパスワード
    MYSQL_ROOT_PASSWORD: Mm6iR9KY
    # デフォルトのデータベースとユーザの設定
    MYSQL_DATABASE: laravel
    MYSQL_USER: system
    MYSQL_PASSWORD: Yu4JFkX6

application:
  container_name: Alpine-Laravel-app
  # Dockerfileを使いビルド(docker-compose up -dで一発構築)
  build: ./docker/app
  tty: false
  volumes_from:
    - data
  expose:
    - "80"
  ports:
    - "80:80"
  environment:
    CODEIGNITER_ENV: development
  links:
    - db
  # ビルドインサーバを利用 プロジェクト名を変更する場合はprojectを変更する
  working_dir: /var/www/html/project/public
  command: php -S 0.0.0.0:80