現役フリーランスエンジニアが運営するテックメディア。日々の業務で得た知識を発信していきます!

  1. バックエンド
  2. 2630 view

Laravel開発環境をLaradockで構築【Docker入門】

最終更新日:2018/12/12

Laradockを使うと、簡単にLaravel+Nginx+phpMyAdminの環境を構築する事ができます。

Dockerを使った事がない人でも、Laravel開発環境を構築できるように説明していきます。
Dockerって便利だなと思って貰えると嬉しいです!

Dockerとは

Dockerは、コンテナ型仮想環境を、作成、配布、実行するためのプラットフォームです。
Dockerを利用すると、Dockerイメージを作成して使用するだけで開発環境を構築する事がする事ができます。(今回はLaradockを利用するので、Dockerイメージを作成する事もなく、より簡単です。)

環境構築の簡単さ以外にも、Dockerを使用するメリットはたくさんあります。

普遍な実行環境による冪等性の確保
実行環境構築とアプリケーション構成のコード化
実行環境とアプリケーションの一体化によるポータビリティー性の向上
システムを構成するアプリケーションやミドルウェアの構成管理の容易さ

是非この機会に、Docker入門をしてください!

Dockerについて詳しく説明しているサイト。
さくらのナレッジ、Docker入門
Docker

Laradockとは

Lara dockは、Docker上で動作する、オープンソースのLaravel開発環境です。
使用するには、DockerとGitのインストールが必要となります。

Laradock

Laradockでの環境構築の流れ

Dockerのインストール

  • ディレクトリ作ってLaradockをクローン
  • 設定ファイルの作成
  • コンテナを初期化
  • Laravelプロジェクトの作成
  • 共有ディレクトリの設定変更
  • コンテナの再起動・変更の反映
  • Laravelプロジェクトの確認

Dockerのインストール

右側にある会員登録、を選択して会員登録を完了させてください。
会員登録

次に画面中央部にある、DownloadfromDockerStoreボタンをクリック→画面右にあるGetDockerを選択してください。
公式サイト

docker-install
docker-activate

Docker.dmgがダウンロードできたらDocker.dmgを開いて書かれている通りに進めていきます。
最後にGotitボタンを押して、Docker is runnningになれば成功です!

ディレクトリ作ってLaradockをクローン

好きな名前のディレクトリを作成して、Laradockをクローンします

mkdir laradock_docker
cd laradock_docker
git clone https://github.com/laradock/laradock.git

設定ファイルの作成

STEP3 Laradockの.envファイルの編集
laradockディレクトリに移動してenvファイルを作成

cd laradock
cp env-example .env

コンテナを初期化

コンテナとは、OSとアプリケーションを同梱した箱で、Dockerイメージを基に作成されます。
Docker Composeはyml形式の設定ファイルで、複数コンテナをまとめて管理する事ができます。

ymlについては以下の記事でチェックしてください。

docker compose upで、docker-compose.yamlファイルを基にコンテナを作成、起動します。
初回のみ、10分程度時間がかかります。
-d オプションをつける事で、コンテナがバックグラウンドで起動し、実行し続けます。

docker-compose up -d nginx mysql workspace phpmyadmin

Laravelプロジェクトの作成

workspaceコンテナに入ってlaravelプロジェクトの作成をします。
まずは、workspaceコンテナに入りましょう。

docker-compose exec --user=laradock workspace bash

laradock

次に、Laravelの新規プロジェクトを作成します。
最後の部分で使用するlaravelのバージョンを指定する事ができます。

composer create-project laravel/laravel laravel-project --prefer-dist "5.7"

現在のlaradock_dockerのディレクトリ構成は以下のようになっています。

├── laradock
│   ├── DOCUMENTATION
│   ├── LICENSE
│   ├── adminer
│   ├── aerospike
│   ├── apache2
│   ├── aws
│   ├── beanstalkd
│   ├── beanstalkd-console
│   ├── caddy
│   ├── certbot
│   ├── docker-compose.sync.yml
│   ├── docker-compose.yml
│   ├── docker-registry
│   ├── docker-sync.yml
│   ├── docker-web-ui
│   ├── elasticsearch
│   ├── env-example
│   ├── gitlab
│   ├── grafana
│   ├── haproxy
│   ├── hhvm
│   ├── ide-codiad
│   ├── ide-icecoder
│   ├── ide-theia
│   ├── ide-webide
│   ├── ipython
│   ├── jenkins
│   ├── jupyterhub
│   ├── kibana
│   ├── laravel-echo-server
│   ├── laravel-horizon
│   ├── logs
│   ├── maildev
│   ├── mailhog
│   ├── mariadb
│   ├── memcached
│   ├── minio
│   ├── mongo
│   ├── mongo-webui
│   ├── mssql
│   ├── mysql
│   ├── neo4j
│   ├── nginx
│   ├── percona
│   ├── pgadmin
│   ├── php-fpm
│   ├── php-worker
│   ├── phpmyadmin
│   ├── portainer
│   ├── postgres
│   ├── postgres-postgis
│   ├── rabbitmq
│   ├── redis
│   ├── rethinkdb
│   ├── selenium
│   ├── solr
│   ├── sync.sh
│   ├── thumbor
│   ├── travis-build.sh
│   ├── varnish
│   └── workspace
└── laravel-project
    ├── app
    ├── artisan
    ├── bootstrap
    ├── composer.json
    ├── composer.lock
    ├── config
    ├── database
    ├── package.json
    ├── phpunit.xml
    ├── public
    ├── readme.md
    ├── resources
    ├── routes
    ├── server.php
    ├── storage
    ├── tests
    ├── vendor
    └── webpack.mix.js

先ほどログインしたworkspaceコンテナ上のvar/wwwが仮想環境側の共有ディレクトリ
物理環境側の共有ディレクトリは、laradock_docker > laravel-projectとなります。

共有ディレクトリの設定変更

laravel-projectを共有ディレクトリに設定する為に、laradockディレクトリのenvファイルを編集します。
.envファイルの上から8行目、APP_CODE_PATH_HOST=../を以下のように書き変えてください。
MYSQLのバージョンをlatestから5.7に変更してください。

APP_CODE_PATH_HOST=../laravel-project
MYSQL_VERSION=5.7

laravel-project側の.envの変更

laravel-project側の変更をしないと、migration時に、PDOException::(“SQLSTATE[HY000] [2002] Connection refused”)エラーが出ますので以下のように変更してください。

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laradock
DB_USERNAME=laradock
DB_PASSWORD=secret

コンテナの再起動・変更の反映

Dockerでコンテナを停止する為には、docker-compose stopコマンドを使用します。

Laradockディレクトリに移動し、一度コンテナを停止して、再起動しましょう。

exit
docker-compose stop
docker-compose up -d nginx mysql phpmyadmin

laravelプロジェクトの確認

localhostにアクセスしてみましょう。

laravel

localhost:8080にアクセスするとphpmyadminを利用する事ができます

phpmyadmin

参考

Vagrant vs. Docker
個人開発環境をvagrantで建てるべきか、dockerで建てるべきか
VagrantとDockerについて名前しか知らなかったので試した
[Laravel & Docker 環境構築 with Laradock](https://qiita.com/shunichi_com/items/9b09c5949233b88b9a4a
Docker/Kubernetes実践コンテナ開発入門

The following two tabs change content below.
WINDII

WINDII

WINDII(ウィンディ)は、フリーランスエンジニアが運営するテックメディアです。 日々の業務で得た知見を、皆さんに役立つコンテンツにして発信していくので応援よろしくお願いします! また、Slackで無料コミュニティも運営しています。たくさんのエンジニアが参加していて、プログラミングの相談や雑談などをしている楽しいコミュニティなので、興味ある方はぜひお気軽にご参加ください。 Slackコミュニティはこちらから

バックエンドの最近記事

  1. 人気急上昇中のLaravelをはじめよう!【徹底解説】

  2. Laravelの認可を理解して実装してみよう!

  3. Laravelのシーティング(Seeding)機能をマスターしよう!

  4. Laravelのメール確認機能を設定してみよう!

  5. Laravelの認証機能を設定してみよう!

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP