ローカル開発用Docker環境をOrbstackに変えてみた【おまけ】プロジェクト削除用シェルスクリプト

開発環境

※ Gemini先生、確かに鳥山明風にと指定したのは私ですが、いくらなんでもこりゃヤバすぎません??

プロジェクトのスタート時用のシェルスクリプトを用意したわけですが、削除するにもスクリプトがあった方がいいかも。スタート用のスクリプトを試してるうちにゴミが溜まったからそう思ったのですがww
まあ、とにかくやってみよう。

全体設計的な?

ファイルの設計

ファイル名はdelete-project.shとして、作る時のように

./delete-project.sh プロジェクト名 案件タイプ

という形で使用するスタイルにしましょ。

必要な処理

必要な処理は以下ぐらいだと思われ。

  1. プロジェクトディレクトリ削除
  2. /etc/hosts から該当行を削除
  3. vhost 設定ファイル削除
  4. WordPress の場合はDB削除
  5. Apache リロード

ファイル全体

これはサクッとChatGPT先生に作ってもらいました。ちょっとだけ修正したけど、ほぼそのまま。

#!/bin/bash

##################################################
# プロジェクト削除スクリプト
# ./delete-project.sh プロジェクト名 案件タイプ
# 案件タイプは wp, php, static のいずれか
##################################################

set -e

PROJECT=$1
TYPE=$2
BASE_DIR=~/WORK/docker-compose-lamp/www
VHOST_DIR=~/WORK/docker-compose-lamp/config/vhosts
DOMAIN="${PROJECT}.vagrant.test"
DB="${PROJECT}_db"
DB_HOST=lamp-mysql8
MYSQL_USER=docker
MYSQL_PASSWORD=docker
MYSQL_ROOT_PASSWORD=tiger

if [[ -z "$PROJECT" || -z "$TYPE" ]]; then
  echo "Usage: $0 <project_name> <wp|php|static>"
  exit 1
fi

# 1. プロジェクトフォルダ削除
if [ -d "$BASE_DIR/$PROJECT" ]; then
  rm -rf "$BASE_DIR/$PROJECT"
  echo "[OK] Project directory removed: $BASE_DIR/$PROJECT"
else
  echo "[SKIP] No project directory found: $BASE_DIR/$PROJECT"
fi

# 2. hosts から削除
if grep -q "$DOMAIN" /etc/hosts; then
  sudo sed -i.bak "/$DOMAIN/d" /etc/hosts
  echo "[OK] Hosts entry removed: $DOMAIN"
else
  echo "[SKIP] No hosts entry found for: $DOMAIN"
fi

# 3. vhost ファイル削除
VHOST_FILE="$VHOST_DIR/${PROJECT}.conf"
if [ -f "$VHOST_FILE" ]; then
  rm -f "$VHOST_FILE"
  echo "[OK] VHost file removed: $VHOST_FILE"
else
  echo "[SKIP] No VHost file found: $VHOST_FILE"
fi

# 4. 案件タイプごとの処理
case "$TYPE" in
  wp)
    # データベース削除
    docker exec -i "$DB_HOST" mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "
    DROP DATABASE IF EXISTS $DB;
    "
    echo "[OK] Database dropped: $DB"
    ;;
  php|static)
    echo "[INFO] No database to remove for type: $TYPE"
    ;;
  *)
    echo "Unknown type: $TYPE. Use wp, php, or static."
    exit 1
    ;;
esac

# 5. Apache 再起動
docker compose restart apache

echo "[DONE] Project '$PROJECT' ($TYPE) has been removed."

開発環境Docker,Orbstack,シェル

Posted by YANAGIDAryosuke