我想使用docker-compose与Docker Swarm(我使用docker版本1.13并使用version: '3'
语法编写)。
每项服务是否可以作为"单一"服务到其他服务?这是一个简单的示例:
version: '3'
services:
nodejs:
image: mynodeapp
container_name: my_app
ports:
- "80:8080"
environment:
- REDIS_HOST=my_redis
- REDIS_PORT=6379
deploy:
mode: replicated
replicas: 3
networks:
- my_net
command: npm start
redis:
image: redis
container_name: my_redis
restart: always
expose:
- 6379
deploy:
mode: replicated
replicas: 2
networks:
- my_net
networks:
my_net:
external: true
假设我有3个配置为群组的虚拟机。因此,每个VM上都运行一个nodejs容器,但只有两个redis容器。
在正在运行否 redis的VM上:我的nodejs容器是否会知道redis?
附加问题:
当我为我的redis设置replicas: 4
时,我会在一个 VM上设置两个 redis容器:这对我的nodejs应用程序会有问题吗?
最后一个问题:
当我为我的nodeapp设置replicas: 4
时:这是否会起作用,因为我现在暴露了两次次端口80?
答案 0 :(得分:1)
服务必须是无国籍的。对于数据库,有必要在每个实例中设置集群模式,因为它们是有状态的。
答案 1 :(得分:0)
按照同样的顺序: