diff --git a/Dockerfile b/Dockerfile index 3057f35..a307a45 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,3 +9,6 @@ RUN npm ci COPY . . EXPOSE 3000 + +HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ + CMD wget --quiet --tries=1 --spider http://localhost:3000 || exit 1 diff --git a/docs/docker-swarm-usage.md b/docs/docker-swarm-usage.md new file mode 100644 index 0000000..ae2c97e --- /dev/null +++ b/docs/docker-swarm-usage.md @@ -0,0 +1,43 @@ +# Docker Swarm Usage + +## Healthcheck + +The [Docker Image](../Dockerfile) includes a Healthcheck with the following options: + +``` +--interval=30s +``` +> Specifies the time interval at which the health check should be performed. In this case, the health check will be performed every 30 seconds. + +
+ +``` +--timeout=10s +``` +> Specifies the amount of time to wait for a response from the health check command. If the response does not arrive within 10 seconds, the health check will be considered a failure. + +
+ +``` +--start-period=5s +``` +> Specifies the amount of time to wait before starting the health check process. In this case, the health check process will begin 5 seconds after the container is started. + +
+ +``` +--retries=3 +``` +> Specifies the number of times Docker should retry the health check before considering the container to be unhealthy. + +
+ + +The CMD instruction is used to define the command that will be run as part of the health check. +In this case, the command is `wget --quiet --tries=1 --spider http://localhost:3000/ || exit 1`. This command will attempt to connect to `http://localhost:3000/` +and if it fails it will exit with a status code of `1`. If this command returns a status code other than `0`, the health check will be considered a failure. + +Overall, this HEALTHCHECK instruction is defining a health check process that will run every 30 seconds, wait up to 10 seconds for a response, +begin 5 seconds after the container is started, and retry up to 3 times. +The health check will consist of attempting to connect to http://localhost:3000/ and will consider the container to be unhealthy if it is unable to connect. + diff --git a/docs/host-your-own.md b/docs/host-your-own.md index 6209895..f93f27a 100644 --- a/docs/host-your-own.md +++ b/docs/host-your-own.md @@ -82,6 +82,8 @@ docker run -d --restart=unless-stopped --name=pairdrop -p 127.0.0.1:3000:3000 gh > > To specify options replace `npm run start:prod` according to [the documentation below.](#options--flags-1) +> The Docker Image includes a Healthcheck. To learn more see [Docker Swarm Usage](./docker-swarm-usage.md#docker-swarm-usage) + ### Docker Image self-built #### Build the image ```bash @@ -101,6 +103,8 @@ docker run -d --restart=unless-stopped --name=pairdrop -p 127.0.0.1:3000:3000 -i > > To specify options replace `npm run start:prod` according to [the documentation below.](#options--flags-1) +> The Docker Image includes a Healthcheck. To learn more see [Docker Swarm Usage](./docker-swarm-usage.md#docker-swarm-usage) +
## Deployment with Docker Compose