16

使用以下方式部署此撰写文件的堆栈时:

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命名和引用

4

4 回答 4

3

对于服务之间的通信,如果两个服务通信都在同一个网络中,则可以使用 compose 文件中定义的 serviceName(在您的情况下,您的服务名称是 service-name)。

当您这样做时docker service ls,堆栈名称将显示在每个服务之前。这样做是因为它可能拥有两个不在共享网络中的同名服务。您无法更改它,这样做没有意义,因为该名称并不重要,实际上只是一个 ID。但是,您可以更改堆栈的名称以获取 ${StackNameILike}:${ServiceNameILike}

于 2017-10-03T14:41:32.300 回答
1

我认为它不被支持(还)。

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.ymldocker stack up|deploy

于 2019-10-27T15:38:28.737 回答
1

我认为您可以使用“ container_name ”在 yml 文件中指定容器的名称。一些喜欢:

service-name:
    image: service-image
    container_name: my-custom-service-name
于 2019-12-11T12:16:29.610 回答
0

如果您需要通过服务注册中心从其他服务中引用它,您可以使用以下定义。

service-name:
  image: ....
  network:
    my-network:
      aliases:
        - ref-name
于 2020-11-19T22:15:01.750 回答