环境准备,上一节中的flask-redis项目,将项目启动:
docker-compose up -d
Starting flask-redis_web_1 ... done
Starting flask-redis_redis_1 ... done
查看状态:
docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
flask-redis_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
flask-redis_web_1 python app.py Up 0.0.0.0:8080->5000/tcp
docker-compose scale
我们目前的docker-compose 中的service容器中各自只有一个,通过scale可以去扩展service。
docker-compose up --help
--scale SERVICE=NUM Scale SERVICE to NUM instances. Overrides the
`scale` setting in the Compose file if present.
例如将web服务的数量变为三个:
docker-compose up --scale web=3 -d
WARNING: The "web" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.
Starting flask-redis_web_1 ...
Starting flask-redis_web_1 ... done
Creating flask-redis_web_2 ... error
Creating flask-redis_web_3 ... error
ERROR: for flask-redis_web_2 Cannot start service web: driver failed programming external connectivity on endpoint flask-redis_web_2 (952f3eea8bdf14f0a94845fb6ef5039285f7ffe40620faca32f40643b802fa97): Bind for 0.0.0.0:8080 failed: port is already allocated
ERROR: for flask-redis_web_3 Cannot start service web: driver failed programming external connectivity on endpoint flask-redis_web_3 (50c776deb73b272d04181a8ab385f27cc31689aeeed804436fd2b92836cf25b9): Bind for 0.0.0.0:8080 failed: port is already allocated
ERROR: for web Cannot start service web: driver failed programming external connectivity on endpoint flask-redis_web_2 (952f3eea8bdf14f0a94845fb6ef5039285f7ffe40620faca32f40643b802fa97): Bind for 0.0.0.0:8080 failed: port is already allocated
ERROR: Encountered errors while bringing up the project.
发现报错了,原因是接口已经被分配了。每个容器的端口都想绑定到8080上面,显然是不可能的。
将容器删除:
docker-compose down
Stopping flask-redis_web_1 ... done
Stopping flask-redis_redis_1 ... done
Removing flask-redis_web_3 ... done
Removing flask-redis_web_2 ... done
Removing flask-redis_web_1 ... done
Removing flask-redis_redis_1