benjaminp / httpswatch

https://httpswatch.com
MIT License
99 stars 39 forks source link

Add code support for running HTTPSWatch in Docker #97

Open daknob opened 7 years ago

daknob commented 7 years ago

This Pull Request adds support for Docker in HTTPS Watch. The way this is achieved is by creating a new docker image with all the files and then installing the dependencies included in requirements.txt. The image uses python3.5. As soon as the image is executed (in a container), two processes start. The first is a bash script, namely /bin/periodic-check.sh, which currently runs check_https.py every 24 hours in the background. The second is the nginx web server, properly configured to serve /out and /static in port 80. By default, if you don't pass any extra arguments to docker, it will run with the /config included in this repository. However, to allow for easy editing of the configuration file, a docker volume is exposed, namely /httpswatch/config/, so by using docker run with -v /path/to/config:/httpswatch/config/ the configuration file can be overrided with a new one. If you decide to do this, every time you make a change to the configuration file in the host, the docker container will use the new configuration file, just like a cron job.

How to build the Docker Image:

Just run:

docker build -t benjaminp/httpswatch .

How to run a built image:

To run HTTPSWatch with the default configuration file on port tcp/8000, use the following:

docker run -p 8000:80 --rm --name httpswatch benjaminp/httpswatch

To run HTTPSWatch with a custom configuration file, use:

docker run -p 8000:80 --rm --name httpswatch -v /path/to/config:/httpswatch/config/ benjamin/httpswatch

In any case, if you want to run HTTPSWatch in the background, you can also add -d. If you also want to restart automatically the container across host reboots / docker upgrades, remove the --rm and add the --restart=always.

cybershambles commented 7 years ago

Excellent work :)