如何在 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
。哪个读起来更好。
我用 docker stack deploy -c docker-compose.yml my-service
问题: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
。哪个读起来更好。