Scale the service
Estimated reading time: 2 minutesRight now, your service is running on a single container. That’s great for now.
You can check how many containers are running using the docker-cloud container ps
command.
$ docker-cloud container ps
NAME UUID STATUS IMAGE RUN COMMAND EXIT CODE DEPLOYED PORTS
web-1 6c89f20e ▶ Running my-username/python-quickstart:latest python app.py 1 hour ago web-1.my-username.cont.dockerapp.io:49162->80/tcp
A single container works just fine for now, but it could be a problem if that container becomes unresponsive. To avoid this, you can scale to more than one container. You do this with the service scale
command:
$ docker-cloud service scale web 2
In this example, you can see we’re scaling the service called web
to 2
containers.
Run service ps
again, and you should now see your service scaling:
$ docker-cloud service ps
NAME UUID STATUS IMAGE DEPLOYED
web 68a6fb2c ⚙ Scaling my-username/python-quickstart:latest 1 hour ago
If you run container ps
you should see multiple containers:
$ docker-cloud container ps
NAME UUID STATUS IMAGE RUN COMMAND EXIT CODE DEPLOYED PORTS
web-1 6c89f20e ▶ Running my-username/python-quickstart:latest python app.py 1 hour ago web-1.my-username.cont.dockerapp.io:49162->80/tcp
web-2 ab045c42 ⚙ Starting my-username/python-quickstart:latest 80/tcp
Containers aren’t assigned a PORT until they are running, so you have to wait until the Service status goes from Scaling to Running to see what port is assigned to them.
$ docker-cloud container ps
NAME UUID STATUS IMAGE RUN COMMAND EXIT CODE DEPLOYED PORTS
web-1 6c89f20e ▶ Running my-username/python-quickstart:latest python app.py 1 hour ago web-1.my-username.cont.dockerapp.io:49162->80/tcp
web-2 ab045c42 ▶ Running my-username/python-quickstart:latest python app.py 1 minute ago web-2.my-username.cont.dockerapp.io:49156->80/tcp
Use either of the URLs from the container ps
command to visit one of your service’s containers, either using your browser or curl.
In the example output above, the URL web-1.my-username.cont.dockerapp.io:49162
reaches the web app on the first container, and web-2.my-username.cont.dockerapp.io:49156
reaches the web app on the second container.
If you use curl to visit the pages, you should see something like this:
$ curl web-1.$DOCKER_ID_USER.cont.dockerapp.io:49166
Hello Python Users!</br>Hostname: web-1</br>Counter: Redis Cache not found, counter disabled.%
$ curl web-2.$DOCKER_ID_USER.cont.dockerapp.io:49156
Hello Python Users!</br>Hostname: web-2</br>Counter: Redis Cache not found, counter disabled.%
Congratulations! You now have two containers running in your web service.