direnvで、使用するdocker-machineを指定する
.env
にこんな風に書けるようにします。
# .env
use docker-machine my-rails-app
ディレクトリに移動すると、自動的にdocker-machineを(まだ起動していないなら)起動し、docker-machine env
で環境変数をセットします。
$ cd ~/Documents/my-project direnv: loading ~/.direnvrc direnv: loading .envrc direnv: using docker-machine my-rails-app Starting "my-rails-app"... Machine "my-rails-app" is already running. direnv: export +DOCKER_CERT_PATH +DOCKER_HOST +DOCKER_MACHINE_NAME +DOCKER_TLS_VERIFY $ docker ps # my-rails-app のコンテナ一覧が表示される
インストール
git clone git@github.com:doloopwhile/direnv_use_docker-machine.git ~/direnv_use_docker-machine echo '. ~/direnv_use_docker-machine/direnv_use_docker-machine.sh' >> ~/.direnvrc
使用目的
docker-machineではdefaultホスト1個しか立ち上げていない人が多いと思います。
docker-composeなどを使えば、コンテナ名が被らないようにできるので、 それで困ってないのかもしれません。
しかし、プロジェクト毎にDockerホストを立ちあげると便利なことも。
- ポート番号がかぶらない(複数のWEBアプリを同時に
docker-compose up
させておける) - ホストごとにDocker Engineの設定を変えられる
docker ps
などのリストがスッキリする- 混乱した時は
docker rm -f $(docker ps -a -q)
してリセットできる。
反面、イメージをホスト毎にインストールする手間などもあります。
Docker開発はまだ試行錯誤が多いのですが、この方法も案外便利かもしれませんよ。