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?

環境構築の自動化スクリプトを作成

Posted at

プロジェクトでの開発時に必要なコマンドを自動化するスクリプトを作成

こんにちは、
皆さんはプロジェクトで開発に入る際、環境構築を一番最初に行うと思いますが、
2回目以降はいくつかコマンドを叩いてローカル環境を構築して開発作業に入っているんじゃないかと思います。
今回はDockerを立ち上げてコンテナからアプリを起動する際の一連のコマンドを自動化するスクリプトを紹介します。

今回自動化を行う工程は以下になります。

  1. プロジェクトディレクトリに移動
  2. VScodeを起動
  3. Dockerデスクトップを起動
  4. フロントエンドを別ターミナル(iTerm2)で起動
  5. docker compose up を実行

たったこれだけですが、毎回ぽちぽちとコマンドを叩いたりしていると割と非効率だと感じていましたので、自動化します。

#!/bin/zsh

#------------------------------------
# スクリプト開始
#------------------------------------
echo "=== スクリプト開始 ==="

# 1. プロジェクトディレクトリへ移動
echo "[INFO] cd $PROJECT_DIR"
cd "$PROJECT_DIR" || {
  echo "[ERROR] ディレクトリ移動に失敗: $PROJECT_DIR"
  exit 1
}

# VSCode を起動(不要であれば削除してOK)
echo "[INFO] VSCode を起動します..."
code .

# 2. Docker Desktop を起動
echo "[INFO] Docker Desktop を起動します..."
open -a "$DOCKER_APP_PATH"

# Docker デーモンが使えるようになるまで待機
echo "[INFO] Docker が起動するのを待機中..."
while ! docker system info >/dev/null 2>&1; do
  echo "  ...起動待ち..."
  sleep 3
done
echo "[INFO] Docker が起動しました。"

# 3. フロントエンドを別ターミナルウィンドウ (iTerm2) で起動
echo "[INFO] フロントエンドを iTerm2 で起動します..."
osascript -e '
tell application "iTerm"
  create window with default profile
  tell current session of current window
    write text "cd '"$FRONTEND_DIR"' && npm run start"
  end tell
  activate
end tell
'

# 4. docker compose up (ログ表示)
echo "[INFO] docker compose up (ログ表示) を開始します。"
echo "[INFO] 終了するには Ctrl + C を押してください。"
docker compose up  # -d オプションを付けず、ログを表示し続ける

# ここに到達するのは、docker compose を Ctrl + C で停止した後
echo "=== スクリプト終了 ==="
exit 0

$PROJECT_DIR
$DOCKER_APP_PATH
$FRONTEND_DIR
は適宜ご自身のプロジェクトのディレクトリやパスを設定してください。

$DOCKER_APP_PATHについて
Docker Desktop を Mac にインストールした場合、多くの環境では /Applications/Docker.app に配置されます。もし場所が異なるかもしれない場合や確実にパスを確認したい場合は、下記の方法を試してください。

Spotlight (mdfind) を使う

mdfind "kMDItemFSName == 'Docker.app'"

find コマンドを使う

sudo find / -name "Docker.app" -print 2>/dev/null

以上です。
初めてこういった自動化スクリプトを作成してみましたが、1回ごとの時間短縮幅はそこまで大きくないです。ただ、毎日これを積み重ねていくと結構な時間を効率化できると思います。
せっかくエンジニアをしている以上、効率化できるところはどんどんやっていこうと思い、記事にしました。

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?