diff --git a/README.md b/README.md index cc53202..7a9de9e 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,34 @@ -# Laravel Docker環境 +# Knowledge Base -Nginx + PHP + Laravel + MySQL + PhpMyAdmin + MailHog を使ったDocker開発環境です。 +Markdown対応のナレッジベースアプリケーションです。Wiki風のリンク記法(`[[ページ名]]`)をサポートし、ドキュメント間の相互リンクを簡単に作成できます。 -## 構成 +## 機能 -- **Nginx**: Webサーバー(ポート: 9700) -- **PHP 8.2**: PHP-FPM + Composer + Node.js -- **MySQL 8.0**: データベース(ポート: 9702) -- **PhpMyAdmin**: DB管理ツール(ポート: 9701) -- **MailHog**: メールテストツール(SMTP: 1025, Web UI: 9725) +- 📝 **Markdownエディタ** - リアルタイムプレビュー付きのドキュメント編集 +- 🔗 **Wikiリンク** - `[[ページ名]]` 記法でドキュメント間リンクを作成 +- 🔍 **クイックスイッチャー** - Ctrl+K (Cmd+K) で高速ドキュメント検索 +- 📁 **階層構造** - フォルダ形式でドキュメントを整理(タイトルに `/` を含めると自動で階層化) +- 🌳 **サイドバーツリー** - 折りたたみ可能なドキュメントツリー +- 👥 **ユーザー管理** - 管理者によるユーザーのCRUD操作 +- 🔒 **認証** - Laravel Breezeによるログイン/登録機能 +- 🎨 **シンタックスハイライト** - コードブロックの自動ハイライト + +## 技術スタック + +- **Backend**: Laravel 11 + Livewire 3 +- **Frontend**: Alpine.js + Tailwind CSS +- **Database**: MySQL 8.0 +- **Server**: Nginx + PHP-FPM 8.2 + +## Docker構成 + +| サービス | コンテナ名 | ポート | 説明 | +|---------|-----------|--------|------| +| Nginx | kb_nginx | 9700 | Webサーバー | +| PHP | kb_php | - | PHP-FPM + Composer + Node.js | +| MySQL | kb_mysql | 9702 | データベース | +| phpMyAdmin | kb_phpmyadmin | 9701 | DB管理ツール | +| MailHog | kb_mailhog | 9725 | メールテスト(SMTP: 1025) | ## ディレクトリ構成 @@ -23,120 +43,181 @@ Nginx + PHP + Laravel + MySQL + PhpMyAdmin + MailHog を使ったDocker開発環 │ └── mysql/ │ └── my.cnf ├── src/ -│ └── (Laravelプロジェクト) -├── .env -├── .gitignore -└── docker-compose.yml +│ ├── app/ +│ │ ├── Console/Commands/ # Artisanコマンド +│ │ ├── Http/Controllers/ # コントローラー +│ │ ├── Livewire/ # Livewireコンポーネント +│ │ ├── Models/ # Eloquentモデル +│ │ └── Services/ # ビジネスロジック +│ ├── resources/views/ +│ │ ├── layouts/ # レイアウト +│ │ ├── livewire/ # Livewireビュー +│ │ └── admin/ # 管理画面 +│ └── routes/ +│ └── web.php # ルーティング +├── compose.yml +└── README.md ``` -## セットアップ手順 +## セットアップ -### 1. Laravelプロジェクトのインストール - -srcフォルダにLaravelをインストールします: +### 1. リポジトリのクローン ```bash -# Dockerコンテナをビルド -docker-compose build - -# PHPコンテナでLaravelをインストール -docker-compose run --rm php composer create-project laravel/laravel . +git clone +cd knowledge-base ``` -### 2. Laravel環境設定 +### 2. 環境変数の設定 -`src/.env` ファイルを編集してデータベース設定を変更: +```bash +cp src/.env.example src/.env +``` + +`src/.env` を編集: ```env DB_CONNECTION=mysql -DB_HOST=mysql +DB_HOST=kb_mysql DB_PORT=3306 DB_DATABASE=laravel -DB_USERNAME=laravel_user -DB_PASSWORD=secret +DB_USERNAME=root +DB_PASSWORD=root MAIL_MAILER=smtp -MAIL_HOST=mailhog +MAIL_HOST=kb_mailhog MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null ``` -### 3. コンテナの起動 +### 3. Dockerコンテナの起動 ```bash -docker-compose up -d +docker compose up -d ``` -### 4. Laravel初期設定 +### 4. 依存関係のインストール ```bash -# キャッシュクリア -docker-compose exec php php artisan config:clear +# Composer +docker exec kb_php composer install -# マイグレーション実行 -docker-compose exec php php artisan migrate +# npm +docker exec kb_php npm install +docker exec kb_php npm run build +``` + +### 5. データベースのセットアップ + +```bash +# マイグレーション +docker exec kb_php php artisan migrate + +# 初期ユーザーの作成(オプション) +docker exec kb_php php artisan db:seed --class=UserSeeder +``` + +### 6. 管理者の設定 + +```bash +# 既存ユーザーを管理者に設定 +docker exec kb_php php artisan user:set-admin admin@example.com + +# 管理者権限を削除する場合 +docker exec kb_php php artisan user:set-admin admin@example.com --remove ``` ## アクセスURL -- **アプリケーション**: http://localhost:9700 -- **PhpMyAdmin**: http://localhost:9701 -- **MailHog Web UI**: http://localhost:9725 +| サービス | URL | +|---------|-----| +| アプリケーション | http://localhost:9700 | +| phpMyAdmin | http://localhost:9701 | +| MailHog | http://localhost:9725 | + +## 初期アカウント + +UserSeederを実行した場合: +- **Email**: admin@example.com +- **Password**: password ## よく使うコマンド ```bash -# コンテナ起動 -docker-compose up -d +# コンテナ操作 +docker compose up -d # 起動 +docker compose down # 停止 +docker compose restart # 再起動 +docker compose logs -f # ログ確認 -# コンテナ停止 -docker-compose down +# PHPコンテナ内でコマンド実行 +docker exec kb_php php artisan [command] +docker exec kb_php composer [command] +docker exec kb_php npm [command] -# コンテナ再起動 -docker-compose restart - -# ログ確認 -docker-compose logs -f - -# PHPコンテナに入る -docker-compose exec php bash - -# Artisanコマンド実行 -docker-compose exec php php artisan [command] - -# Composer実行 -docker-compose exec php composer [command] - -# npm実行 -docker-compose exec php npm [command] +# コンテナに入る +docker exec -it kb_php bash ``` -## データベース接続情報 +## 管理者機能 -- **ホスト**: localhost (外部) / mysql (コンテナ内) -- **ポート**: 9702 (外部) / 3306 (コンテナ内) -- **データベース名**: laravel -- **ユーザー名**: laravel_user -- **パスワード**: secret -- **rootパスワード**: secret +管理者(`is_admin = true`)は以下の機能にアクセスできます: + +- **ユーザー管理** (`/admin/users`) + - ユーザー一覧表示 + - 新規ユーザー作成 + - ユーザー編集(名前、メール、パスワード、管理者権限) + - ユーザー削除 + +管理者はログイン後ダッシュボードへ、一般ユーザーはフロントページへリダイレクトされます。 + +## ドキュメントの作成 + +### 基本的な使い方 + +1. サイドバーの「New Document」をクリック +2. タイトルとMarkdownコンテンツを入力 +3. 保存 + +### 階層構造の作成 + +タイトルに `/` を含めると自動的に階層化されます: + +- `Laravel/Livewire/Components` → `Laravel/Livewire/` フォルダ内に作成 +- `git/認証設定` → `git/` フォルダ内に作成 + +### Wikiリンク + +`[[ページ名]]` 記法でリンクを作成できます: + +```markdown +詳細は [[Getting Started]] を参照してください。 +[[Laravel/Livewire/Components]] も確認してください。 +``` ## トラブルシューティング -### パーミッションエラーが出る場合 +### パーミッションエラー ```bash -# storageとbootstrap/cacheのパーミッション設定 -docker-compose exec php chmod -R 775 storage bootstrap/cache -docker-compose exec php chown -R www-data:www-data storage bootstrap/cache +docker exec kb_php chmod -R 775 storage bootstrap/cache +docker exec kb_php chown -R www-data:www-data storage bootstrap/cache ``` -### コンテナが起動しない場合 +### コンテナが起動しない ```bash -# コンテナとボリュームを全て削除して再構築 -docker-compose down -v -docker-compose build --no-cache -docker-compose up -d +docker compose down --remove-orphans +docker compose up -d ``` + +### Nginxがエラーで停止する + +`docker/nginx/default.conf` の `fastcgi_pass` が `kb_php:9000` になっているか確認してください。 + +### データベース接続エラー + +`src/.env` の `DB_HOST` が `kb_mysql` になっているか確認してください。 + +## ライセンス + +MIT License