【profiles】docker-compose upで特定のサービスのコンテナだけ除外して立ち上げる

プログラミング

同じdocker-compose.ymlのファイルに複数のサービスを書いたとき、なにもしなければ「docker-compose up」でそこに書かれたすべてのサービスのコンテナが起動します。

しかし、同じdocker-compose.ymlに開発用のコンテナも書いているとき、「docker-compose up」でそのコンテナは立ち上がらないようにしたときがあります。

今回は、「docker-compose up」で特定のサービスのコンテナを立ち上げない方法を紹介します。

profilesオプションを使う

結論から言うと、「profiles」オプションを付けたサービスは、「docker-compose up」では立ち上がらないようになります。

version: "3.9"
services:

  phpmyadmin:
    image: phpmyadmin
    ports:
      - "8080:8080"

  phpmyadmin_debug:
    image: phpmyadmin
    profiles:
      - debug

  db:
    image: mysql

この例では、サービス
・phpmyadmin
・phpmyadmin_debug
・db
が存在していますが、phpmyadmin_debugは開発用だとします。

phpmyadmin_debugにはオプションprofilesが付いているため、docker-compose up で立ち上がるのはphpmyadmin, dbの2つだけになります。

docker-compose up

反対にphpmyadmin_debugだけを立ち上げたい場合は、以下のようにすればよいです。

docker-compose up phpmyadmin_debug

3つのサービスを立ち上げたい場合は、profile名を指定します。

docker-compose --profile debug up

※profilesがdebugのサービスだけが立ち上がるのではなく、『profilesオプションがないサービス』+『profilesがdebugのサービス』が立ち上がります。

–profileオプションで起動したコンテナを停止・削除するには、以下のようにします。

docker-compose --profile extra down

特定のサービスだけを起動する他の方法

特定のサービスだけを立ち上げたくないということは、特定のサービスだけを立ち上げたいということでもあります。

そんなとき、一番簡単な方法は次のコマンドでしょう。

docker-compose up service1 service2 service3

また、立ち上げたくないサービスをservice_debugとするとき、次のような方法もあるらしいです。

docker-compose up --scale service_debug=0

参考

Compose でのプロファイル利用

コメント

タイトルとURLをコピーしました