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

时间:2017-10-03 14:02:11

标签: docker docker-compose docker-swarm docker-stack

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

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 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我认为尚不支持。

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_namedocker-compose.yml文件不支持docker stack up|deploy

答案 2 :(得分:0)

我认为您可以使用“ container_name ”在yml文件中指定容器的名称。像这样:

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

答案 3 :(得分:0)

如果需要此信息以通过服务注册表从其他服务中进行引用,则可以使用以下定义。

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