如何在docker-compose 中更改Docker 堆栈生成的服务名称

How to change the service name generated by Docker stack in docker-compose

部署此撰写文件的堆栈时使用:

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

命名和引用

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

当您执行 docker service ls 时,堆栈名称将显示在每个服务之前。这样做是因为可能有两个不在共享网络中的同名服务。您无法更改它,这样做也没有意义,因为该名称并不重要,实际上只是一个 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

请注意,使用 docker stack up|deploy

时,docker-compose.yml 文件不支持 container_name

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

service-name:
    image: service-image
    container_name: my-custom-service-name

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

service-name:
  image: ....
  network:
    my-network:
      aliases:
        - ref-name