0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker * Laravel クイックスタート検証手順

Last updated at Posted at 2025-09-20

はじめに

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

.envDB_各項目などは、開発環境に応じて適宜変更してください。

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 番号に合わせてください。


.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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?