LaradockでLaravel-adminを立ち上げるまで 2018年12月版
はじめに
個人的にはPHPのWebアプリケーションFrameworkの中ではCakePHP が一番得意なんだけど最近若いヤングに大人気らしい Laravel も使えるようになっておいたほうがよさそうな気がしたので使ってみることにした。
で、実用的なScafforldっぽいものの構築はどういうふうにするのかしらといろいろ調べてみてこれが良さそうだなと思ったのが Laradock で Laravel-admin 。Laravel 5.7から Laravel Nova という管理パッケージが公式になったが有料なので Laravel-admin にしといた。
Laradockを設定してコンテナを起動する
$ git clone https://github.com/Laradock/laradock.git
$ cd laradock
$ git clone https://github.com/Laradock/laradock.git
$ cd laradock
env-example
をコピーして.env
としてテキストエディタで開く
$ cp env-example .env
$ vi .env
DATA_PATH_HOST
はmysqlなどのストレージのデータファイルの格納場所を示す。
デフォルトは ~/.laradock/data
となっているが今回はあとで削除することを想定してLaradockのレポジトリ下に変更しておく
# Choose storage path on your machine. For all storage systems
# DATA_PATH_HOST=~/.laradock/data
DATA_PATH_HOST=[YOUR WORKNG DIRECTORY]/laradock/.laradock/data
.env
内の MYSQL_VERSION
を`5.7とする。latestだと現状MySQL8が入るがPDOをはじめいろいろなものが8に追従できてない現状なので、無難に5.7を使うことにする
# MYSQL_VERSION=latest
MYSQL_VERSION=5.7
さらに .env
の末尾に以下の記述を追加して保存する
DB_CONNECTION=mysql
DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
コンテナを起動する
$ docker-compose up -d nginx mysql phpmyadmin redis beanstalkd
$ docker-compose up -d nginx mysql phpmyadmin redis beanstalkd
各コンテナが正常に起動した
...
Creating laradock_redis_1 ... done
Creating laradock_mysql_1 ... done
Creating laradock_docker-in-docker_1 ... done
Creating laradock_workspace_1 ... done
Creating laradock_phpmyadmin_1 ... done
Creating laradock_php-fpm_1 ... done
Creating laradock_beanstalkd_1 ... done
Creating laradock_nginx_1 ... done
この時点で http://localhost にアクセスすると 404 Not Foundとなる。まだLaravelをセットアップしていないため
http://localhost:8080 にアクセスすると phpmyadmin が起動している。サーバmysql
、ユーザ名 root
、 パスワード root
でログインできる
ログインすると default
というスキーマが作成されている。これがLaravelが使うDBとなる
ちなみにmysqlを直接コマンド操作したい場合はmysqlコンテナにログオンして操作すればよい
$ docker exec -it laradock_mysql_1 bash
$ mysql -u root -p
Password: root
Laravelをセットアップする
Laravelのワークスペースとなるコンテナに、ユーザlaradock
でログオンする。
$ docker exec -u laradock -it laradock_workspace_1 bash
ログオンディレクトリは /var/www
でWebサーバのドキュメントルートになっている。ここにLaravelのプロジェクトを作成する。今回はプロジェクトを MyProject
とする
$ composer create-project laravel/laravel MyProject
プロジェクトが作成できたことを確認する
$ cd MyProject
$ ls
app composer.json database public routes tests
artisan composer.lock package.json readme.md server.php vendor
bootstrap config phpunit.xml resources storage webpack.mix.js
ストレージとキャッシュのディレクトリを書き込み可能にする
$ chmod 766 storage
$ chmod 766 bootstrap/cache
いったんコンテナからログオフする
$ exit
コンテナを停止させる
$ docker-compose stop
.env
を開く
$ vi .env
APP_CODE_PATH_HOST
を ../MyProject
としてドキュメントルートが MyProjectを指すようにする
# Point to the path of your applications code on your host
# APP_CODE_PATH_HOST=../
APP_CODE_PATH_HOST=../MyProject
コンテナを起動する
$ docker-compose up -d nginx mysql phpmyadmin redis beanstalkd
http://localhostにアクセスするとLaravelの初期画面が表示される
Laravel-admin をインストールする
公式 を参考にしながらやってみる
ワークスペースのコンテナにログオンする
$ docker exec -u laradock -it laradock_workspace_1 bash
以下を実行する
$ composer require encore/laravel-admin
$ artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
プロジェクト内の .env
を開く
$ vi .env
DB_HOST=mysql
、DB_DATABASE=default
、DB_USERNAME=root
、DB_PASSWORD=root
にそれぞれ変更する
DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
DB_HOST=mysql
DB_PORT=3306
# DB_DATABASE=homestead
DB_DATABASE=default
# DB_USERNAME=homestead
DB_USERNAME=root
DB_PASSWORD=root
インストールを実行する
$ artisan admin:install
config/filesystems.php
を開く
$ vi config/filesystems.php
disks
配列に下記のadmin
の設定を追加する。Adminダッシュボードでアップロードした画像等をパブリックアクセスできるようにするため。
https://github.com/z-song/laravel-admin/issues/1327#issuecomment-336821532
'disks' => [
...
'admin' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
],
storage
へのシンボリックリンクを作成する
$ artisan storage:link
http://localhost/admin/ にアクセスすると管理画面へのログイン画面となる。
Username: admin
、Password: admin
でログインする
ダッシュボードが表示される
感想
どちらもドキュメントみるかぎりでは簡単にできそうだったんだけど、意外とハマりどころが多かったので手順を記載しておいた。特にMySQL周りは最初latestでやっていていろんなエラーに悩まされた。まあ各コンテナの更新状況によっていろいろ動かないことが出てくるのはあるあるだし、Laravelも開発が活発なのでこのセットアップログもいつまで保つかわからない。なので2018年12月版としておいた。
Author And Source
この問題について(LaradockでLaravel-adminを立ち上げるまで 2018年12月版), 我々は、より多くの情報をここで見つけました https://qiita.com/bathtimefish/items/009393c21a9899f9c725著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .