使用以下方法部署此撰写文件的堆栈时
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
命名和引用答案 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_name
时docker-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