web-dev-qa-db-ja.com

docker-composeでDockerスタックによって生成されたサービス名を変更する方法

以下を使用してこの作成ファイルのスタックをデプロイする場合:

docker stack deploy -c docker-compose.yml myapp

service-name:
    image: service-image
    namelike-property: my-custom-service-name // here I would like to know the property

生成されるサービス名はmyapp_service-nameになります

my-custom-service-nameによって名前が付けられて参照されるようにしたい

7
Igor L.

サービス間の通信では、通信する両方のサービスが同じネットワーク内にある場合、作成ファイルで定義されているserviceName(この場合はサービス名はservice-name)を使用できます。

あなたがするときdocker service lsスタック名はすべてのサービスの前に表示されます。これは、共有ネットワークにない同じ名前の2つのサービスを持つことができるためです。その名前は重要ではなく、実際には単なるIDであるため、これを変更することはできません。また、変更しても意味がありません。ただし、スタックの名前を変更して$ {StackNameILike}:$ {ServiceNameILike}を取得することはできます

2
herm

(まだ)サポートされているとは思いません。

docker serviceはこれをサポートします

#!/bin/bash

SERVICE_NAME=myservice

docker service create \
  --name $SERVICE_NAME \
  --hostname $SERVICE_NAME \
  --network myoverlayattachableswarmscopednetwork \
  # IMAGE GOES HERE

サービスにログインして、指定した名前で同じネットワーク上の別のサービスにpingを実行できました。

例えば

docker exec -it $(docker ps -q -f name=myotherservice) bash
ping myservice

container_nameを使用する場合、docker-compose.ymlファイルではdocker stack up|deployはサポートされないことに注意してください。

1
Jonathan Komar

"container_name"を使用して、ymlファイル内のコンテナーの名前を指定できると思います。のようなもの:

service-name:
    image: service-image
    container_name: my-custom-service-name
0
Leandro Sá