はじめに
Dockerを使った開発で、こんな経験はありませんか?
- 毎回長いコマンドを打つのが面倒...
- チームメンバーごとに違うコマンドを使っている...
- 新メンバーが環境構築で躓く...
そんな悩みを解決してくれるのが dip です!
dipって何?
dip(Docker Interaction Process)は、Dockerをもっと使いやすくするためのツールです。
Evil Martians社が開発したオープンソースのCLIツールで、長くて覚えにくいdocker-composeコマンドを、短くて分かりやすいコマンドに変換してくれます。
具体例で見てみよう
たとえば、Railsのコンソールを起動する場合...
Dockerだけの場合
docker-compose run --rm app bundle exec rails console
dipを使った場合
dip rails console
めちゃくちゃ短くなりましたね!これがdipの魅力です。
dipの5つの便利ポイント
1. コマンドが短くて覚えやすい
長いコマンドを毎回打つ必要がなくなります。dip rails sやdip bundle installのように、シンプルに実行できます。
2. チーム全体で統一できる
dip.ymlという設定ファイルをGitで共有すれば、チーム全員が同じコマンドを使えます。「あれ、どうやって起動するんだっけ?」がなくなります。
3. 初回セットアップが自動化できる
新しいメンバーが参加しても、dip provision一発で環境構築が完了。もう手順書とにらめっこする必要はありません。
4. 環境変数の管理が楽
環境変数を設定ファイルにまとめて記述できるので、管理がとても簡単になります。
5. タイプミスが減る
短いコマンドなので、タイプミスによるエラーが激減します。
インストール方法
macOSの場合
brew tap evilmartians/tap
brew install evilmartians/tap/dip
Linuxの場合
curl -L https://github.com/evilmartians/dip/releases/download/v7.1.0/dip-`uname -s`-`uname -m` > /usr/local/bin/dip
chmod +x /usr/local/bin/dip
インストールできたか確認してみましょう。
dip version
バージョン情報が表示されればOKです!
実際に使ってみよう
ステップ1: dip.ymlを作成
プロジェクトのルートディレクトリにdip.ymlというファイルを作ります。
version: '7.1'
# 環境変数の設定
environment:
RAILS_ENV: development
DATABASE_URL: postgres://postgres:password@db:5432/myapp_development
# よく使うコマンドの定義
interaction:
# bashを起動
bash:
service: app
command: bash
# Railsコマンド
rails:
service: app
command: bundle exec rails
# bundleコマンド
bundle:
service: app
command: bundle
# rspecコマンド
rspec:
service: app
command: bundle exec rspec
# 初回セットアップの手順
provision:
- docker-compose up -d db
- dip bundle install
- dip rails db:create
- dip rails db:migrate
- dip rails db:seed
ステップ2: 初回セットアップ
dip provision
このコマンド一つで、データベースの起動からマイグレーションまで全部やってくれます!
ステップ3: 日常的に使うコマンド
セットアップが終わったら、以下のようなコマンドが使えます。
# Railsサーバーを起動
dip rails server
# コンソールを起動
dip rails console
# テストを実行
dip rspec
# Gemをインストール
dip bundle install
# マイグレーションを実行
dip rails db:migrate
# bashに入る
dip bash
簡単ですね!
よくある使い方の例
データベース操作
# データベースを作成
dip rails db:create
# マイグレーションを実行
dip rails db:migrate
# シードデータを投入
dip rails db:seed
# データベースをリセット
dip rails db:reset
開発作業
# サーバーを起動
dip rails server
# 別のターミナルでコンソールを起動
dip rails console
# テストを実行
dip rspec spec/models/user_spec.rb
パッケージ管理
# Gemを追加してインストール
dip bundle add devise
dip bundle install
# yarnでパッケージをインストール
dip yarn install
docker-composeとの違いを比較
| 操作 | docker-compose | dip |
|---|---|---|
| サーバー起動 | docker-compose run --rm app bundle exec rails s |
dip rails s |
| コンソール起動 | docker-compose run --rm app bundle exec rails c |
dip rails c |
| テスト実行 | docker-compose run --rm app bundle exec rspec |
dip rspec |
| bashに入る | docker-compose run --rm app bash |
dip bash |
圧倒的に短くて分かりやすいですよね!
もっと便利に使うTips
カスタムコマンドを追加する
よく使うコマンドは自分で追加できます。
interaction:
# ログを見る
logs:
service: app
command: tail -f log/development.log
# Rubocopを実行
rubocop:
service: app
command: bundle exec rubocop
これでdip logsやdip rubocopが使えるようになります。
複数のコマンドを組み合わせる
interaction:
setup:
service: app
command: |
bundle install
rails db:migrate
rails db:seed
dip setupで一連の作業をまとめて実行できます。
まとめ
dipを使うと...
- ✅ コマンドが短くて覚えやすい
- ✅ チーム全体で開発環境を統一できる
- ✅ 新メンバーの環境構築が簡単
- ✅ タイプミスが減る
- ✅ 開発効率が上がる
Dockerを使った開発をもっと快適にしたい方は、ぜひdipを試してみてください!
参考リンク
この記事が役に立ったら、ぜひシェアしてください!
質問やフィードバックがあれば、コメント欄でお待ちしています 😊
初心者の方にも分かりやすいように、具体例を多く入れて、ステップバイステップで説明する構成にしました!必要に応じて内容を調整してくださいね。