Docker 为堆栈编写集合容器名称
Docker compose set container name for stacks
我正在将一个小堆栈部署到 UCP
我面临的一个问题是为 service1 命名容器。
我需要容器的静态名称,因为它被 mycustomimageforservice2
使用
当使用(版本 3)Compose 文件以群模式部署堆栈时,container_name option被忽略。
我必须使用 版本: 3 撰写文件。
version: "3"
services:
service1:
image: dockerhub/service1
ports:
- "8080:8080"
container_name: service1container
networks:
- mynet
service2:
image: myrepo/mycustomimageforservice2
networks:
- mynet
restart: on-failure
networks:
mynet:
我有哪些选择?
您不能在 compose 中强制使用 containerName,因为它旨在允许扩展服务(通过更新副本数量)之类的事情,而这不适用于名称。
一项服务可以使用服务名称 (http://serviceName:internalServicePort) 访问另一项服务,而 docker 将为您完成其余的工作(例如解析为实际容器地址、副本之间的负载平衡....)。
这适用于覆盖的默认网络类型
您可能会在 docker-compose.yml 文件中遇到链接服务的问题。
类似于:
version: "3"
services:
service1:
image: dockerhub/service1
ports:
- "8080:8080"
networks:
- mynet
service2:
image: myrepo/mycustomimageforservice2
networks:
- mynet
restart: on-failure
links:
- service1
networks:
mynet:
在 docker-compose.yml 中使用链接参数,您将允许某些服务使用容器名称访问另一个服务,在这种情况下,service2 将通过链接参数建立到 service1 的连接.我不确定您为什么要使用网络,但不需要使用链接参数。
如果您确实必须使用版本 3 但不使用 swarm,则可以将 --compatibility 添加到您的命令中。
container_name 选项在 swarm 模式下部署堆栈时被忽略,因为容器名称需要是唯一的。
https://docs.docker.com/compose/compose-file/#container_name
指定自定义容器名称,而不是生成的默认名称。
container_name: my-web-container
查看完整的 docker-撰写文件
version: '3.9'
services:
node-ecom:
build: .
image: "node-ecom-image:1.0.0"
container_name: my-web-container
ports:
- "4000:3000"
volumes:
- ./:/app:ro
- /app/node_modules
- /config/.env
env_file:
- ./config/.env
我正在将一个小堆栈部署到 UCP
我面临的一个问题是为 service1 命名容器。
我需要容器的静态名称,因为它被 mycustomimageforservice2
使用当使用(版本 3)Compose 文件以群模式部署堆栈时,container_name option被忽略。
我必须使用 版本: 3 撰写文件。
version: "3"
services:
service1:
image: dockerhub/service1
ports:
- "8080:8080"
container_name: service1container
networks:
- mynet
service2:
image: myrepo/mycustomimageforservice2
networks:
- mynet
restart: on-failure
networks:
mynet:
我有哪些选择?
您不能在 compose 中强制使用 containerName,因为它旨在允许扩展服务(通过更新副本数量)之类的事情,而这不适用于名称。 一项服务可以使用服务名称 (http://serviceName:internalServicePort) 访问另一项服务,而 docker 将为您完成其余的工作(例如解析为实际容器地址、副本之间的负载平衡....)。
这适用于覆盖的默认网络类型
您可能会在 docker-compose.yml 文件中遇到链接服务的问题。 类似于:
version: "3"
services:
service1:
image: dockerhub/service1
ports:
- "8080:8080"
networks:
- mynet
service2:
image: myrepo/mycustomimageforservice2
networks:
- mynet
restart: on-failure
links:
- service1
networks:
mynet:
在 docker-compose.yml 中使用链接参数,您将允许某些服务使用容器名称访问另一个服务,在这种情况下,service2 将通过链接参数建立到 service1 的连接.我不确定您为什么要使用网络,但不需要使用链接参数。
如果您确实必须使用版本 3 但不使用 swarm,则可以将 --compatibility 添加到您的命令中。
container_name 选项在 swarm 模式下部署堆栈时被忽略,因为容器名称需要是唯一的。 https://docs.docker.com/compose/compose-file/#container_name
指定自定义容器名称,而不是生成的默认名称。
container_name: my-web-container
查看完整的 docker-撰写文件
version: '3.9'
services:
node-ecom:
build: .
image: "node-ecom-image:1.0.0"
container_name: my-web-container
ports:
- "4000:3000"
volumes:
- ./:/app:ro
- /app/node_modules
- /config/.env
env_file:
- ./config/.env