我用 docker stack deploy -c docker-compose.yml my-service
部署我的 docker 容器
问题:docker service ls
总是显示 NAME
和 my-service_my-service
,从 docker-compose 生成:
services:
my-service:
#container_name #not supported when using 'docker stack deploy'
ports:
- "8090:8080"
...
这是因为 docker stack deploy 中的名字被当作堆栈名,而服务形式 docker-compose 作为服务名。
因此,结果名称是 stackname_servicename
。
问题:如何强制在没有堆栈前缀的情况下命名服务?
回答1
此行为是技术先决条件,因此无法更改。您可以更改堆栈名称和服务名称,但不能更改两者的组成。该名称必须是单独的,否则您可能在不同的网络中具有相同名称的不同服务,因此 ID 和别名相同。
您可以通过使用 docker service create --name
创建一个 bash 脚本来构建自己的“撰写”以实现该目标,然后由您自己负责。
回答2
由于无法解决这个问题,也许最好只为应用程序提供一个通用服务名称,例如 app:
。
services:
app:
ports:
- "8090:8080"
...
这样,docker stack deploy my-service
将导致 my-service_app
。哪个读起来更好。