docker-compose up で一部のサービスを除外する方法
Docker 小ネタです。
docker-compose up
コマンドで一部のサービスを除外する方法についてです。
動作確認時点の Docker のバージョンは次のとおりです。
docker
:
$ docker --versionDocker version 19.03.5, build 633a0ea
docker-compose
:
$ docker-compose versiondocker-compose version 1.25.4, build 8d51620a
docker-compose.yml
に記述したサービス一覧の中にときどきしか使わないものがある場合は、そのサービスを除外して docker-compose up
をしたくなることがあります。
私はむしろほぼいつでもそうしたいぐらいです。
docker-compose up [service a] [service b] ...
と、立ち上げたいものだけを記述すれば一部のサービスだけ立ち上げることも可能なのですが、私の場合は、立ち上げたいサービスに比べて除外したいサービスの数の方が少ないことが多いので、このやり方では不便です。
ということで docker-compose up
で一部のサービスを除外する方法を調べました。
結論としては、直接指定できる方法は提供されていません。
代わりに、あまり直感的ではない次善の策として --scale
オプションが利用可能です。
例えば cli
というサービスを定義していて、それを除外して他のサービスをすべて立ち上げたいときは次のようにすると OK です。
docker-compose up --scale cli=0
ただ、除外したいサービスが複数個ある場合はこれでも不便です。 この場合には例えば次のような感じで指定するアイデアもあるようです。
docker-compose up $(< services.txt)
ただこれもあまりやりやすいとは言えません。
docker-compose.yml
の中で enabled: false
あるいは up: false
といった感じで指定できるとうれしいのですが、この記事を書いている時点ではそのようなオプションは無いようです。
参考: