dockerでlaravelのDBにアクセスでConnection refused吐かれた時
DokcerでLaravelを立ち上げた時にDB接続できなかった時の解決策
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=docker DB_USERNAME=docker DB_PASSWORD=docker
Docker以外だった場合この形でDB接続できたのでが、Dockerの場合これだと接続することができなかった。
DB_CONNECTION=mysql DB_HOST={db} DB_PORT=3306 DB_DATABASE=docker DB_USERNAME=docker DB_PASSWORD=docker
DB_Hostをローカルではなく、DockerのDBのコンテナにしたら解決しました
Laravelについて
Laravelとは
PHPのフレームワークで、webアプリケーションを制作に用いられる。
1 MVCモデルを活用している。
MVCとはビジネスロジックをModelが担当し、表示などをViewが処理に、全体の制御を Controllerで行う形態いなる。
2パッケージ管理はComposerを行なってくれている。
依存関係などもまとめてインストールしてくれる。
3 Eloquent(エロクアント) ORM
データベスの操作を行なってくれている。 Eloquent Object Relational Mappingの略で、データベースとモデルにリレーションを持たせて、データを柔軟に扱えるようにしたもの。
Laravelのディレクトリ構成
`
─── Laravel
├── app
├── bootstrap
├── config
├── database
├── public
├── resources
├── routes
├── storage
├── tests
└── vendor
App
アプリケーションのコアコードを配置されている。ほとんどの全部のクラスは、このディレクトリに設定されている。
bootstrap
フレームワークを初期起動処理するapp.phpファイルを設置している。。このディレクトリには、ルートやサービスのキャッシュファイルなど、パフォーマンスを最適化するためのフレームワークで生成されたファイルを含むcacheディレクトリも含む。通常、このディレクトリ内のファイルを変更する必要はない。
config
アプリケーションの全設定ファイルを設置している。
database
マイグレーションとモデルファクトリ、初期値設定(シーディング)を配置している。 このディレクトリをSQLiteデータベースの設置場所としても利用できます。
public
アプリケーションへの全リクエストの入り口となり、オートローディングを設定するindex.phpファイルがある。また、このディレクトリにはアセット(画像、JavaScript、CSSなど)を配置する。
resources
Viewと、CSSやJavaScriptなどの未加工のコンパイルされていないアセットを含む。すべての言語ファイルも格納してる。
routes
web.php api.php console.php channels.php
アプリケーションのすべてのルート定義を配置している。デフォルトでルートファイルをいくつかLaravelは用意されいる。 web.phpファイルは、RouteServiceProviderがwebミドルウェアグループへ配置するルートを記述する。これにより、セッション状態、CSRF保護、およびクッキー暗号化が提供される。アプリケーションがステートレスのRESTful APIを提供しない場合は、すべてのルートがweb.phpファイルで定義される。
api.phpファイルは、RouteServiceProviderがapiミドルウェアグループへ配置するルートを記述しる。これらのルートはステートレスであることが意図されているため、これらのルートを介してアプリケーションに入るリクエストは、トークンを介してで認証されることを意図しており、セッション状態にアクセスできない。
console.phpファイルは、クロージャベースのコンソールコマンドをすべて定義する場所。各クロージャはコマンドインスタンスと結合されるため、各コマンドのIOメソッドを操作する簡単なアプローチが可能。このファイルはHTTPルートを定義しませんが、アプリケーションへのコンソールベースのエントリポイント(ルート)を定義している。
channels.phpファイルは、アプリケーションがサポートするすべてのイベントブロードキャストチャンネルを登録できる場所。
storage
app framework logs
ディレクトリに分離される。 appディレクトリは、アプリケーションが作成したファイルを保存するために使用できる。 frameworkディレクトリは、フレームワークが作成したファイルとキャッシュを保存するために使用する。 最後に、logsディレクトリにはアプリケーションのログファイルを保存している。
tests
自動テストを設置する。
vendor
Composerによる依存パッケージが配置されます。