LoginSignup
34
24

More than 5 years have passed since last update.

Laradockを使ってLaravelを動かすまで

Last updated at Posted at 2019-01-28

PHPフレームワーク市場

PHPフレームワークは2014年からLaravelへの人気が集まっています。
以前symfonyで開発していたのですが、人気は横ばい。Cake、Zendに関しては下火です。
いつの間にかLaravelの一人勝ち状態です。
1489651875_image2.png

仮想化市場

VMwareやVirtualboxの仮想化は広く使われいますが、起動が遅かったりと課題もあります。
Dockerの登場でコンテナ型の仮想化が容易になりました。
ホスト型とコンテナ型の違いはこちらの記事がとてもわかりやすいです。
https://qiita.com/akinko/items/8fb50feb6d60eb975dba
カーネルをホストと共有していてその上に複数のコンテナが動くイメージです。

docker_eyecatch.png

docker導入のメリットをこちらがよく説明してくれています

人気の2つを合わせたLaradock触っとけば間違いない

今回はLaravel+Nginx+phpMyAdminの環境を構築します。

あらかじめ以下をインストールしておく必要があります。

  • Docker
  • Git

windowsの場合

windows for dockerを以下の手順でインストールします。
https://qiita.com/Ogaaaan/items/99fe54f052ca450889f7

環境構築

Laradockインストール

ワークディレクトリ作成し、githubからclone

$ mkdir Work
$ cd Work
$ git clone https://github.com/LaraDock/laradock.git

コンテナ内のアプリケーションの設定ファイルを作成します。
laradock内のenv-exampleファイルを.envファイルへコピーします。

$ cd laradock
$ cp env-example .env

コンテナの環境設定変更

今回は下記のようなフォルダ構成にしたいと思います。

フォルダ構成
work
  ┗ laradock
  ┗ develop

Laradockディレクトリ配下の.envファイルのAPP_CODE_PATH_HOSTを変更してアプリケーションディレクトリを指定することができます。
APP_CODE_PATH_HOSTを../developに、MYSQLのバージョンをlatestから5.7にデータベス名、User、passwordも変更します。
最新版の8.0系はLaravelのmigrateコマンドでこける可能性あります。

$ vi .env

# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../develop

### MYSQL #################################################

MYSQL_VERSION=5.7
MYSQL_DATABASE=laradock
MYSQL_USER=laradock
MYSQL_PASSWORD=laradock
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=laradock
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

### PHP MY ADMIN ##########################################

# Accepted values: mariadb - mysql

PMA_DB_ENGINE=mysql

# Credentials/Port:

PMA_USER=laradock
PMA_PASSWORD=laradock
PMA_ROOT_PASSWORD=laradock
PMA_PORT=8080

コンテナ起動

docker-composeコマンドでnginx、mysql、workspace、phpmyadminを起動します。
-dオプションでコンテナがバックグラウンドで起動し実行し続けます。

docker-composeは、複数のコンテナで構成されるアプリケーションについて、Dockerイメージのビルドや各コンテナの起動・停止などをより簡単に行えるようにするツールです。

dockerは1コンテナ=1プロセスなので、
ホストOSからpsコマンドを叩くとDocker上で動いているプロセスがそのまま確認できます。

$ docker-compose up -d nginx mysql workspace phpmyadmin
$ docker-compose ps

その他docker-composeコマンドはこちら

Laravelプロジェクトの作成

workspace(作業領域)に入ります。
--prefer-distでLaravelのバージョン指定できます。
最新は5.7ですが、今回は5.5を指定します。
プロジェクト作成には少し時間がかかります。

$ docker-compose exec --user=laradock workspace bash
laradock@5cf89da63592:/var/www$
laradock@5cf89da63592:/var/www$ composer create-project laravel/laravel develop --prefer-dist "5.5"

Laravelの環境設定変更

作成されたLaravelプロジェクト配下の.envを更新します。

laradock@5cf89da63592:/var/www$ cd develop/
laradock@5cf89da63592:/var/www/develop$ vi .env

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laradock
DB_USERNAME=laradock
DB_PASSWORD=laradock
laradock@5cf89da63592: exit

nginxのroot変更

cd laradock
vi nginx/sites/default.conf
root /var/www/develop/public;

コンテナ再起動

docker-compose restartだとlaravelのルートの設定が変わらないので、
コンテナ自体を作り直します。

docker-compose down
docker-compose build --no-cache mysql
docker-compose up -d nginx mysql workspace phpmyadmin
docker-compose ps

確認

全てのコンテナがupになっていればOKです。

          Name                          Command              State                    Ports
--------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh           Up      2375/tcp
laradock_mysql_1              docker-entrypoint.sh mysqld     Up      0.0.0.0:3306->3306/tcp, 33060/tcp
laradock_nginx_1              /bin/bash /opt/startup.sh       Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1            docker-php-entrypoint php-fpm   Up      9000/tcp
laradock_phpmyadmin_1         /run.sh supervisord -n          Up      0.0.0.0:8080->80/tcp, 9000/tcp
laradock_workspace_1          /sbin/my_init                   Up      0.0.0.0:2222->22/tcp

mysqlが起動していない場合は~/.laradock/data/mysqlが壊れてしまっている可能性があります。その場合は下記のこちらサイトを参考にしてください。

スクリーンショット 2019-01-28 23.55.35.png

http://localhost:8080でphpmyadminにアクセスできることを確認します。

スクリーンショット 2019-01-28 23.55.56.png

phpmyadminで.envに指定したユーザー、パスワードでログインできればOKです。

コンテナ間でどうやって通信しているのか?疑問に思うと思った方はこちら

これで、Laravelの開発をスタートする準備完了です。

早速、認証機能を作っていきしょう。

34
24
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
34
24