概要
- Laravel5.6の開発環境をLaradockで構築
- herokuにデプロイするようにする
手元の環境
>> sw_vers ProductName: Mac OS X ProductVersion: 10.14 BuildVersion: 18A326h
構築後のVerなど
docker
> docker --version Docker version 18.03.1-ce, build 9ee9f40 > docker-compose --version docker-compose version 1.21.1, build 5a3f1a3 > docker-machine -version docker-machine version 0.14.0, build 89b8332
docker: MySQL
> docker-compose exec mysql mysql --version mysql Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using EditLine wrapper
docker: Laravel
> docker-compose exec workspace php artisan --version Laravel Framework 5.6.27
heroku cli
> heroku --version heroku-cli/6.99.0-ec9edad (darwin-x64) node-v9.11.1
heroku PostgreSQL
> heroku run "psql --version" Running psql --version on ⬢ xxxxx... up, run.3720 (Free) psql (PostgreSQL) 10.4 (Ubuntu 10.4-2.pgdg16.04+1)
手順
以下フォルダは任意で設定
- ~/dev: それぞれの開発用フォルダ
- project: それぞれのプロジェクトフォルダ
プロジェクト用のフォルダ作成
> cd ~/dev > mkfir project > cd project > git init
Laradockのインストール
> git submodule add https://github.com/Laradock/laradock.git > cd laradock > cp env-example .env # プロジェクトフォルダ直下にLaravelがインストールできないのでPATHを編集 > vi .env - APP_CODE_PATH_HOST=../ + APP_CODE_PATH_HOST=../src
ワークスペースを起動
> docker-compose up -d workspace > docker-compose ps Name Command State Ports ------------------------------------------------------------------- laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
ワークスペースに入ってLaravelのインストール
> docker-compose exec workspace bash # composer create-project laravel/laravel . --prefer-dist
srcフォルダ以下にLaravelのファイルが展開される。
# ll total 192 drwxr-xr-x 24 root root 768 Jul 14 04:31 ./ drwxr-xr-x 1 root root 4096 Jul 14 04:16 ../ drwxr-xr-x 7 root root 224 Jul 14 04:30 app/ -rw-r--r-- 1 root root 1686 Jul 14 04:30 artisan drwxr-xr-x 4 root root 128 Jul 14 04:30 bootstrap/ -rw-r--r-- 1 root root 1477 Jul 14 04:30 composer.json -rw-r--r-- 1 root root 144157 Jul 14 04:31 composer.lock drwxr-xr-x 15 root root 480 Jul 14 04:30 config/ drwxr-xr-x 6 root root 192 Jul 14 04:30 database/ -rw-r--r-- 1 laradock laradock 702 Jul 14 04:31 .env -rw-r--r-- 1 root root 651 Jul 14 04:30 .env.example -rw-r--r-- 1 root root 111 Jul 14 04:30 .gitattributes -rw-r--r-- 1 root root 155 Jul 14 04:30 .gitignore -rw-r--r-- 1 root root 1022 Jul 14 04:30 package.json -rw-r--r-- 1 root root 1134 Jul 14 04:30 phpunit.xml drwxr-xr-x 9 root root 288 Jul 14 04:30 public/ -rw-r--r-- 1 root root 3675 Jul 14 04:30 readme.md drwxr-xr-x 5 root root 160 Jul 14 04:30 resources/ drwxr-xr-x 6 root root 192 Jul 14 04:30 routes/ -rw-r--r-- 1 root root 563 Jul 14 04:30 server.php drwxr-xr-x 5 root root 160 Jul 14 04:30 storage/ drwxr-xr-x 6 root root 192 Jul 14 04:30 tests/ drwxr-xr-x 38 root root 1216 Jul 14 04:32 vendor/ -rw-r--r-- 1 root root 549 Jul 14 04:30 webpack.mix.js
ホスト側でnginxを起動する
> docker-compose up -d nginx > docker-compose ps Name Command State Ports -------------------------------------------------------------------------------------------------------------- laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp laradock_nginx_1 nginx 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_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
これで、ホスト端末でhttp://localhost
にアクセスするとwelcome画面が表示される。
やっほーい^^
MySQLのインストール
MySQLの最新バージョンをインストールすると
設定をゴニョゴニョしないとだめなので、今回は5.7を利用する。(重要
> vi .env - MYSQL_VERSION=latest + MYSQL_VERSION=5.7 > docker-compose up -d mysql
docker経由でmysqlへログインできることを確認する。
> docker-compose exec mysql mysql -uroot -proot mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.22 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
ホスト端末からもアクセスできることを確認する。-h 127.0.0.1
を指定しないと接続できないかもしれない。
> mysql -uroot -proot default -h 127.0.0.1 mysql: [Warning] Using a password on the command line interface can be insecure. Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.7.22 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
Laravelのマイグレーション
laradockの.envを参考にしてlaravelの.envの設定を変更する。(1敗)
> vi ../src/.env - DB_HOST=127.0.0.1 - DB_DATABASE=homestead - DB_USERNAME=homestead + DB_HOST=mysql + DB_DATABASE=default + DB_USERNAME=default > docker-compose exec workspace bash # php artisan migrate:install Migration table created successfully.
ここまでで開発環境の構築はおわり。
開発用のgit リポジトリがあればremote addしてcommit&pushしておこう。
herokuの利用開始
herokuでユーザ登録はこちらから。
heroku toolbeltのインストールとログイン
> brew install heroku/brew/heroku > heroku auth:login Enter your Heroku credentials: Email: [ユーザ登録したときのメールアドレス] Password: [ユーザ登録したときのパスワード] Logged in as [ユーザ登録したときのメールアドレス]
herokuでアプリケーション作成と設定
アプリケーション名は他のユーザと被らないように。
> cd ~/dev/project > heroku create [アプリケーション名] --buildpack heroku/php Creating ⬢ [アプリケーション名]... done https://[アプリケーション名].herokuapp.com/ | https://git.heroku.com/[アプリケーション名].git echo web: vendor/bin/heroku-php-apache2 public/ > Procfile git add . git commit -m 'add Procfile'
git のリモートリポジトリに追加
> git remote add heroku https://git.heroku.com/[アプリケーション名].git
herokuの設定にAPP_KEYを追加
docker-composeとherokuコマンドは実行ディレクトリが異なるので注意(1敗)
> cd ~/dev/project/laradock > docker-compose exec workspace php artisan --no-ansi key:generate --show base64:xxxxx > cd ~/dev/project > heroku config:set APP_KEY=xxxxx Setting APP_KEY and restarting ⬢ [アプリケーション名]... done, v4 APP_KEY: base64:xxxxx
herokuへデプロイ
git push heroku master
とすると
- masterブランチをpush
- リポジトリのルートフォルダからpush
してしまうので、git push subtree xxx
にすること(2敗)
> cd ~/dev/project > git subtree push --prefix src/ heroku master
アプリケーションの起動
heroku open
laravelのwencome画面が表示されたらOK。
DBの追加とマイグレーション
herokuだとMySQL環境構築に無償プランでも
クレジットカードの登録が必要なので、
PostgreSQLにするのが、おすすめ。
> heroku addons:add heroku-postgresql Creating heroku-postgresql on ⬢ [アプリケーション名]... free Database has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pg:copy Created postgresql-cylindrical-99644 as DATABASE_URL Use heroku addons:docs heroku-postgresql to view documentation
herokuの環境変数にDB接続情報を設定する
DB接続URL[DATABASE_URL]を取得する。
> cd ~/dev/project > heroku config === [アプリケーション名] Config Vars APP_KEY: base64:xxxxx DATABASE_URL: postgres://[ユーザ名]:[パスワード]@[ホスト名]:[ポート]/[データベース名]
herokuの環境変数に設定
DB_CONNECTIONは「postgres」じゃなくて「pgsql」(1敗)
> heroku config:set DB_CONNECTION=pgsql > heroku config:set DB_HOST=[ホスト名] > heroku config:set DB_PORT=[ポート] > heroku config:set DB_DATABASE=[データベース名] > heroku config:set DB_USERNAME=[ユーザ名] > heroku config:set DB_PASSWORD=[パスワード]
マイグレーションしてみる。
> heroku run "php artisan migrate:install" Running php artisan migrate:install on ⬢ [アプリケーション名]... up, run.6239 (Free) Migration table created successfully. > heroku run "php artisan migrate:status" ▸ heroku-cli: update available from xxxxx to xxxxx Running php artisan migrate:status on ⬢ [アプリケーション名]... up, run.5021 (Free) +------+------------------------------------------------+-------+ | Ran? | Migration | Batch | +------+------------------------------------------------+-------+ | N | 2014_10_12_000000_create_users_table | | | N | 2014_10_12_100000_create_password_resets_table | | +------+------------------------------------------------+-------+
ドハマリしたらご参考に上げてる記事をご参考に。
ではでは、良きLaravel開発ライフを^^
ご参考
Laradockを使ったlaravel開発環境
https://qiita.com/akokubu/items/c79bb7128d7b16a20a22
Laravelアプリをherokuで動かすチュートリアル
https://qiita.com/kamukiriri/items/73ff35fc7f9083ca68c1
The Heroku CLI
https://devcenter.heroku.com/articles/heroku-cli
[Docker] Docker for Macでmysqlを起動〜接続
https://qiita.com/jshimazu/items/de7a206c4bafecefd359
Heroku初心者がHello, Herokuをしてみる
https://qiita.com/Arashi/items/b2f2e01259238235e187