Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/snails8/laravel-cms-sample
Laravel:CMS sample
https://github.com/snails8/laravel-cms-sample
backend docker laravel php
Last synced: 9 days ago
JSON representation
Laravel:CMS sample
- Host: GitHub
- URL: https://github.com/snails8/laravel-cms-sample
- Owner: Snails8
- Created: 2021-10-30T00:46:11.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-11-08T06:16:49.000Z (over 3 years ago)
- Last Synced: 2024-10-18T16:17:03.681Z (4 months ago)
- Topics: backend, docker, laravel, php
- Language: PHP
- Homepage:
- Size: 831 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## setup
```
$ cp .env.example .env$ docker-compose build
$ docker-compose up -d
$ docker-compose exec app composer install
$ docker-compose exec app npm install
$ docker-compose exec app npm run dev$ docker-compose exec app php artisan key:generate
$ docker-compose exec app php artisan migrate:refresh --seed$ docker-compose exec app chmod -R 777 storage
$ docker-compose exec app chmod -R 777 bootstrap/cache
```
## 開発時 コマンド
```
// 環境立ち上げ
$ docker-compose up// sass js 監視
$ docker-compose exec app npm run watch// サーバー設定変更時
$ docker-compose build
$ docker-compose up// 各種ライブラリ変更時
$ docker-compose exec app composer install
$ docker-compose exec app npm install```
## 運用時
task-definition で定義する環境変数をgithub secret に格納してください
```
AWS_ACCESS_KEY_ID
AWS_ACCOUNT_ID => AWS console login > username(右上) > マイアカウント: account id
AWS_SECRET_ACCESS_KEY
LOKI_ID
LOKI_SECRET
SECURITY_GROUPS
SUBNETS
```
ECS > クラスター > 選択 > 詳細 から確認## アーキテクチャ
laravel default の構成に一部クリーンアーキテクチャの思想を導入
Layer 毎に分離しその中でDomainで分離している
```
app/
│
├── Http/Controllers
│ ├── { DomainName } // 扱う事業領域名
│ │ ├── Controller // 各種controllerの責務を持った処理
│ │ └── ...
│ ├── { DomainName }
│ ├── { DomainName }
│ ├── ...
│ ...
├── Http/Requests
│ ├── { DomainName } // 扱う事業領域名
│ │ ├── request // 各種validationの責務を持った処理
│ │ └── ...
│ ├── { DomainName }
│ ├── { DomainName }
│ ├── ...
│ ...
├── Models
│ ├── { db_Name } // db定義
│ ├── { db_name }
│ ├── ...
│ ...
├── Service
│ ├── { DomainName } // 扱う事業領域名
│ │ ├── Service // 各種controllerの責務を持った処理
│ │ └── ...
│ ├── { DomainName }
│ ├── UtilityService // どのアプリケーションでも使える処理
│ ├── ...
│ ...
├── Repository
│ ├── { DomainName } // 扱う事業領域名
│ │ ├── repository // 各種controllerの責務を持った処理
│ │ └── ...
│ ├── { DomainName }
│ ├── { DomainName }
│ ├── ...
│ ...
```責務
```
Controller : 入力(httpリクエスト)を受け取り、適切な処理系に値を渡し、レスポンスを返す
Request : バリデーション
Service : 中核的なロジック
repository : Eloquent Model は極力ココでのみ使用
```## 課題
```
・現状の構成のままではマイクロサービスに対応できない。
・中規模のアプリケーションまでなら対応可能
・Eloquent Model 依存の設計
・大規模化した際の命名問題
・〇〇の肥大化と数百行に渡った際の複数人の作業リスク増加
・UtilityService のルールがないため、文化を浸透させないとくちゃくちゃになる
・認可処理を切り出していない( Laravel Policy)
```俗に言う技術駆動パッケージング(or Package by Layer )