You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.5 KiB

5 years ago
## Docker Swarm health check example
This example shows how health check works in Docker Swarm.
### What does this container do?
Container runs a nginx server and it also runs a script which writes a ``dead``
status to ``/usr/share/nginx/html/status`` file on every odd run which is then
picked by the health check that expects ``alive`` status from the nginx running
in the container.
So every odd run the container gets ``unhealthy`` status.
Then you can observe that running this container in Docker Engine alone will
not restart it. Hence we will run it as a service in the Docker Swarm which
will ensure the container gets restarted until it gets ``healthy`` status.
### Building image
```
docker build -t healthcheck-test .
```
### Setting up env
Make sure you have recent Docker Engine installed.
```
docker swarm init
```
### Running the service
```
docker service create \
--name test1 \
--mount type=bind,src=/tmp,dst=/usr/share/nginx/html \
5 years ago
--detach healthcheck-test
5 years ago
```
5 years ago
### Watching the health check
5 years ago
```
docker ps |grep test1
docker service ls
```
### Cleaning up
```
docker service rm test1
docker swarm leave --force
5 years ago
rm -f -- /tmp/status
docker rmi healthcheck-test
5 years ago
```
### Extra
If you want to restart the container manually, you need to downscale it to 0
first and then upscale it back again.
```
docker service scale test1=0
docker service scale test1=1
```
### References
- https://docs.docker.com/compose/compose-file/
- https://docs.docker.com/engine/reference/builder/