📖

Dockerで自分専用のコンテナ環境を作成する

2024/12/13に公開

背景

最近だと開発環境でDockerを使う場面も増えてきていると思います。僕は普段Railsのアプリケーションを開発していますが、開発環境はDockerのコンテナで立ち上げています。この場合、開発スタイルは以下の2つに分かれると思います。

  • docker compose execを駆使してホストで開発する
  • コンテナに入って開発する

僕は後者のスタイルが好きですが、前者のホストで開発するスタイルをよく見かけます。

前者の場合、コマンド実行する際にdocker compose execを駆使する必要があり、タイプ量も多く億劫に感じることも多いので、それの回避方法を幾つか紹介するとともに、こっそり自分だけ後者のスタイルで開発できるようにする方法も紹介します。

1. aliasを設定する

一番簡単な方法かつ有名なものかなと思います。docker compose execのaliasを登録しておくことで、タイプ量を削減します。

alias dce="docker compose exec"
dce app bin/rails s

2. Makefileを作成する

アプローチはaliasと似ていますが、Makefileでコマンドを定義しておくことで、さまざまなコマンドをmake ○○で実行できます。

3. docker-compose.yamlをoverrideする

これが本題で一番書きたかったことです。gitツリーを汚さずに自分のdocker-compose.yamlだけを上書きします。

docker-compose.yamlの上書きといえばdocker-compose.override.yamlなので、それを用意します。

services:
  app:
    volumes:
      - .git:/usr/src/app/.git:delegated
      - /Users/username/.ssh:/root/.ssh:delegated

コンテナの中でgit操作を行いたいので.git、GitHubにssh接続したいので~/.sshをマウントします。

このままだとコミットに含まれてしまいます。.gitignoreを書いたとしても差分が発生してしまいます。

ここで編集するファイルは.git/info/excludeです。

vi .git/info/exclude
docker-compose.override.yaml

役割としては.gitignoreと同じようなもので、記述したファイルがコミット対象に含まれなくなります。

これで自分だけこっそりとコンテナに入って作業をすることができるようになります。

GitHubで編集を提案

Discussion