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

※ Gemini先生、確かに鳥山明風にと指定したのは私ですが、いくらなんでもこりゃヤバすぎません??
プロジェクトのスタート時用のシェルスクリプトを用意したわけですが、削除するにもスクリプトがあった方がいいかも。スタート用のスクリプトを試してるうちにゴミが溜まったからそう思ったのですがww
まあ、とにかくやってみよう。
全体設計的な?
ファイルの設計
ファイル名は
として、作る時のようにdelete-project.sh
./delete-project.sh プロジェクト名 案件タイプ
という形で使用するスタイルにしましょ。
必要な処理
必要な処理は以下ぐらいだと思われ。
- プロジェクトディレクトリ削除
- /etc/hosts から該当行を削除
- vhost 設定ファイル削除
- WordPress の場合はDB削除
- 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."
ディスカッション
コメント一覧
まだ、コメントがありません