以下を使用してこの作成ファイルのスタックをデプロイする場合:
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によって名前が付けられて参照されるようにしたい
サービス間の通信では、通信する両方のサービスが同じネットワーク内にある場合、作成ファイルで定義されているserviceName(この場合はサービス名はservice-name)を使用できます。
あなたがするときdocker service ls
スタック名はすべてのサービスの前に表示されます。これは、共有ネットワークにない同じ名前の2つのサービスを持つことができるためです。その名前は重要ではなく、実際には単なるIDであるため、これを変更することはできません。また、変更しても意味がありません。ただし、スタックの名前を変更して$ {StackNameILike}:$ {ServiceNameILike}を取得することはできます
(まだ)サポートされているとは思いません。
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
はサポートされないことに注意してください。
"container_name"を使用して、ymlファイル内のコンテナーの名前を指定できると思います。のようなもの:
service-name:
image: service-image
container_name: my-custom-service-name