はじめに
READMEの確認としてクイックスタートが正しいか確認する手順の一例記事です
全体像(位置関係)
~/projects/
├─ task-reminder/ # 開発用(既存)
│ ├─ docker-compose.yml
│ ├─ src/ # ← 開発中のLaravel本体
│ └─ ...(省略)
│
└─ task-reminder-quick/ # クイックスタート検証用(新規クローン)
├─ docker-compose.yml # ← 同じリポだがフォルダ違い=別プロジェクト扱い
├─ docker-compose.override.yml # ← 検証用だけポート差し替え(下記に例)
├─ src/ # ← 検証用に初期化して動作確認
└─ ...(省略)
-
フォルダが別 ⇒ Composeのプロジェクト名も別(例:task-reminder / task-reminder-quick)
-
コンテナ/ネットワーク/ボリュームは自動でプロジェクト名の接頭辞が付き、完全分離されます
役割の分担
-
開発用(task-reminder)
日々の実装・動作確認をする場所。8080/8081/8025/3307 で運用中。 -
検証用(task-reminder-quick)
READMEのクイックスタート手順が本当に動くかを“まっさら”で検証する専用。
起動のたびにゼロから(必要なら down --volumes)再現、ポートはズラす。
ポート設計(衝突ゼロ)
| 役割 | アプリ | phpMyAdmin | Mailpit UI / SMTP | DB(ホスト側) |
|---|---|---|---|---|
開発用 task-reminder
|
8080→80 | 8081→80 | 8025→8025 / 1025→1025 | 3307→3306 |
検証用 task-reminder-quick
|
8090→80 | 8091→80 | 8035→8025 / 1035→1025 | 3308→3306 |
- これで同時起動OK。被っていたら検証側の番号をさらにずらせばOK。
検証フォルダ側の override(ポート差し替え)
~/projects/task-reminder-quick/docker-compose.override.yml に設置:
services:
app:
ports:
- "8090:80"
db:
ports:
- "3308:3306"
phpmyadmin:
ports:
- "8091:80"
mailpit:
ports:
- "8035:8025"
- "1035:1025"
- Composeは同階層の docker-compose.yml と 自動でマージします。
リポ本体は触らず、検証用だけポート上書き。
↓ コマンドの場合:override を作成(docker-compose.yml と同じ階層)
cat > docker-compose.override.yml <<'YAML'
services:
app:
ports:
- "8090:80"
db:
ports:
- "3308:3306"
phpmyadmin:
ports:
- "8091:80"
mailpit:
ports:
- "8035:8025"
- "1035:1025"
YAML
ボリュームの関係(データも分離)
- 開発用:task-reminder_dbdata_task_reminder
- 検証用:task-reminder-quick_dbdata_task_reminder
↓
プロジェクト名が接頭辞になるため、DBデータも混ざらない。
片方を初期化しても、もう片方のデータは無傷。
使い方(開発 ↔ 検証)
開発を続けるとき(既存)
cd ~/projects/task-reminder
docker compose up -d # いつもどおり
docker compose down # 作業後に止めるなら
READMEのクイックスタート検証
1. リポジトリをクローン
git clone https://github.com/honaki-engineer/task-reminder.git task-reminder-quick
cd task-reminder-quick
docker compose down --remove-orphans --volumes # 初期化(検証用だけ対象)
2. override(ポート差し替え)
3. Dockerコンテナ起動
docker-compose.ymlのあるディレクトリでコマンド実行
# 初回起動
docker compose up -d --build
# 2回目以降
docker compose up -d
4. Dockerコンテナに入る
docker compose exec app bash
5. 環境変数を設定
cp .env.example .env
.envのDB_各項目などは、開発環境に応じて適宜変更してください。
6. PHPパッケージをインストール
composer install
7. アプリケーションキーを生成
php artisan key:generate
8. フロントエンドビルド(Tailwind/Vite 使用時)
exit # Docker コンテナを抜ける
pwd # ~/task-reminder-quick
cd ./src
npm install
npm run dev
9. DBマイグレーション & 初期データ投入
docker compose exec app bash # Dockerコンテナに入る
php artisan migrate --seed
10. 初期画像作成(ストレージリンク作成含む)
chmod +x setup.sh
./setup.sh
11. Slack連携〜毎朝通知の構成
12. アクセス
ご自身の port 番号に合わせてください。
- アプリ
http://localhost:8080 - phpMyAdmin
http://localhost:8081 - Mailpit
http://localhost:8025
.env 設定例(開発環境)
APP_NAME=TaskReminder
APP_ENV=local
APP_DEBUG=true
APP_URL=https://example.com
DB_CONNECTION=mysql
DB_HOST=db # Compose サービス名
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_username
DB_PASSWORD=your_password
# Mailpit を使う場合
MAIL_MAILER=smtp
MAIL_HOST=mailpit # Docker
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
# Slack OAuth(セットアップ10で解説)
SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=
SLACK_REDIRECT_URI=
# ゲストログイン
GUEST_LOGIN_TOKEN=guest123 # ゲストログイントークン
GUEST_PASSWORD=guestpassword # ゲストログインのパスワード
GUEST_EMAIL=guest@example.com # ゲストログインのメールアドレス
# スケジュールテスト(true:false=開発:本番)
SCHEDULE_DEBUG_MINUTE=true
困ったときの早見コマンド
# どのプロジェクトが何を使ってるか(ポート含む)
docker ps --format 'table {{.Names}}\t{{.Label "com.docker.compose.project"}}\t{{.Ports}}'
# プロジェクトごとのボリュームが分かれているか
docker volume ls --filter "label=com.docker.compose.project"
要約
-
位置関係:~/projects/ 配下に 開発用 と 検証用 の別フォルダを並べる
-
分離ポイント:フォルダ違い → プロジェクト名違い → コンテナ/ネットワーク/ボリューム完全分離
-
衝突対策:検証側だけ docker-compose.override.yml でポート変更
-
運用:開発はそのまま、検証は毎回“まっさら”にしてREADME手順を再現
使い終わったら(検証用を全削除)
開発用は消さずに検証用だけ消す
検証用フォルダに入って一撃:
cd ~/projects/task-reminder-quick
docker compose down --remove-orphans --volumes --rmi local
# (任意)フォルダ自体も削除
cd .. && rm -rf task-reminder-quick
-
--remove-orphans … 今のcompose定義に無い“名残コンテナ”も削除
-
--volumes … プロジェクト用ボリューム(DBデータ含む)も削除 ⚠️
-
--rmi local … このプロジェクトでビルドされたローカルイメージを削除(ベースイメージは残る)
後片付けチェック
# コンテナが残っていないか
docker ps -a --filter "label=com.docker.compose.project=task-reminder-quick"
# ボリュームが残っていないか
docker volume ls --filter "label=com.docker.compose.project=task-reminder-quick"
ディスクをさらに空けたい(任意・他プロジェクト未使用のみ削除)
# ぶら下がりイメージ(未使用)を削除
docker image prune -a
# ビルドキャッシュも削除(さらにスリム化)
docker builder prune
🛟 安全チェック
-
実行前に docker compose ls でプロジェクト名を確認
-
間違って開発用のフォルダで --volumes を打たないこと(DBも消えます)
ビルドキャッシュを掃除
最小限(未使用キャッシュのみ)
docker buildx prune -f