LaradockでDocker上にLaravel開発環境を作る

概要

  • 手っ取り早くLaravel開発環境を構築して開発に取り掛かりたい

  • 1.laradock をダウンロード

  • 2.準備
  • 3.docker image,docker container作成
  • 4.コンテナ内でlaravelプロジェクト作成
  • 5..envのアプリのパスを作成したlaravelプロジェクトに設定
  • 6.nginxのrootをlaravelプロジェクトのpublicに変更
  • 7.docker-compose を再起動してlocalhostにアクセス

1.laradock をダウンロード

  • プロジェクト用ディレクトリを作成して git からcloneしてくる

    • 1
      2
      3
      mkdir -p project | cd project

      $ git clone https://github.com/laradock/laradock.git
    • laradockディレクトリが作成される

2.準備

  • 作成したプロジェクトディレクトリ内の env-example を .env にコピー

    • 1
      $ p env-example .env
    • envファイル

      • docker-compose.yml で使用する変数が記述されている
      • envファイルを編集することで自分のプロジェクトにインストールするソフトウェアを指定できる
      • COMPOSE_FILE の値を編集するとき、macなら区切り文字に 「:」windows なら「;」を使用する必要がある

3.docker-compose.yml を実行

  • docker-compose.yml ファイルを実行

    • Getting Started では mysql でしたが heroku へのデプロイを考えて postgres を指定してみます
    • 1
      $ docker-compose up -d nginx postgres php-fpm
    • かなり時間かかります…(各ディレクトリにあるDockerfileからimage,contenaを生成しているため)

4.コンテナ内でlaravelプロジェクト作成

  • workspaceコンテナに入り、シェルを実行する

    • 1
      $ docker-compose exec workspace bash
    • artisan,composer,php unit,gulp 等のコマンドが実行されるらしい

    • laradockはデフォルトで、プロジェクトのいるディレクトリの一階層上のディレクトリをvolumeとしてマウントする
    • 今回の例では「project/」の中にlaradockを作成したので「project/」がマウンティングされている
  • laravelプロジェクトを作成
  • 1
    $ composer create-project laravel/laravel my-app
  • volumeとしてマウンティングされているのでローカルの「project/」にもlaravelプロジェクトが生成される

5. .envのアプリのパスを作成したlaravelプロジェクトに設定

  • docker-composeを使用する一階層上にあるので下記のように指定
  • .envファイル
    • 1
      APP_CODE_PATH_CONTAINER=../my-app:cached

6.nginxのrootをlaravelプロジェクトのpublicに変更

  • project/laradock/nginx/sites 内の default.conf を編集
    • 1
      2
      3
      root /var/www/public;
      から
      root /var/www/my-app/public;

7.docker-compose を再起動してlocalhostにアクセス

  • docker-composer を down させて再度コンテナ起動
  • 1
    2
    $ docker-compose down
    $ docker-compose up -d nginx postgres php-fpm
  • localhostにアクセスしてlaravelプロジェクト初期画面が表示されれば成功

参考