如何在 docker-compose 中设置 container_name 以进行集群部署?

How to set container_name in docker-compose for swarm deployment?

我用 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"
    ...

这是由于dockerstack deploy中的名称被作为stack名称,服务形式docker-compose为服务名称。

因此,结果名称为 stackname_servicename

问题:如何强制在没有堆栈前缀的情况下命名服务?

此行为是技术先决条件,因此无法更改。您可以更改堆栈名称和服务名称,但不能更改两者的组合。该名称必须是单独的,否则您可能在不同的网络中使用相同的名称和 ID 和别名使用不同的服务。

您可以通过创建 bash-script 和 docker service create --name 来构建您自己的“撰写”来实现该目标,然后由您自己负责。

由于无法解决这个问题,也许最好只为应用程序提供一个通用服务名称,例如 app:.

services:
  app:
    ports:
      - "8090:8080"
    ...

这样,docker stack deploy my-service 将导致 my-service_app。哪个读起来更好。