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ファイルがある。また、このディレクトリにはアセット(画像、JavaScriptCSSなど)を配置する。

resources

Viewと、CSSJavaScriptなどの未加工のコンパイルされていないアセットを含む。すべての言語ファイルも格納してる。

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による依存パッケージが配置されます。