Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/galexrt/container-healthchecks
Simple to use Container Image for https://github.com/healthchecks/healthchecks.
https://github.com/galexrt/container-healthchecks
container-image hacktoberfest healthchecks
Last synced: 29 days ago
JSON representation
Simple to use Container Image for https://github.com/healthchecks/healthchecks.
- Host: GitHub
- URL: https://github.com/galexrt/container-healthchecks
- Owner: galexrt
- License: mit
- Created: 2016-10-06T07:46:50.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2024-08-16T10:58:31.000Z (3 months ago)
- Last Synced: 2024-08-16T12:13:17.907Z (3 months ago)
- Topics: container-image, hacktoberfest, healthchecks
- Language: Dockerfile
- Homepage:
- Size: 187 KB
- Stars: 63
- Watchers: 5
- Forks: 21
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- jimsghstars - galexrt/container-healthchecks - Simple to use Container Image for https://github.com/healthchecks/healthchecks. (Dockerfile)
README
# container-healthchecks
Simple to use Container Image for [github.com/healthchecks/healthchecks](https://github.com/healthchecks/healthchecks).
Container Image available from:
* [Quay.io](https://quay.io/repository/galexrt/healthchecks)
* [GHCR.io](https://github.com/users/galexrt/packages/container/package/healthchecks)
* [**DEPRECATED** Docker Hub](https://hub.docker.com/r/galexrt/healthchecks)
* Docker Hub will not receive any new tags starting with Healthchecks version `v1.22.0`!Container Image Tags:
* `main` - Latest build of the `main` branch.
* `vx.y.z` - Latest build of the application (updated in-sync with the date container image tags).
* `vx.y.z-YYYYmmdd-HHMMSS-NNN` - Latest build of the application with date of the build.## Healthchecks Version
Currently Healthchecks `v2.10` version is installed in the image.
## Running The Container Image
**NOTE** By default Healthchecks uses a SQLite database, located at `/data/hc.sqlite`.
To configure [healthchecks](https://github.com/healthchecks/healthchecks) server, you
just add the environment variables as shown in the [`settings.py` file of the healthchecks Project](https://github.com/healthchecks/healthchecks/blob/master/hc/settings.py).```bash
docker run \
--detach \
--name=healthchecks \
--publish 80:8000 \
--env 'DB_NAME=/data/hc.sqlite' \
--env 'SECRET_KEY=YOUR_SECRET_KEY' \
--env 'PING_EMAIL_DOMAIN=example.com' \
--env 'SITE_ROOT=http://example.com' \
--env 'EMAIL_HOST=smtp.example.com' \
--env 'EMAIL_PORT=25' \
--env 'EMAIL_USE_TLS=True' \
--env '[email protected]' \
--env 'EMAIL_HOST_PASSWORD=YOUR_PASSWORD' \
--env 'ALLOWED_HOSTS=localhost,*' \
--env 'CONTAINER_PRUNE_INTERVAL=600'
--volume /opt/docker/healthchecks/data:/data \
quay.io/galexrt/healthchecks:main
```**WARNING** The default uses a SQLite database, check [Database configuration](#database-configuration) section for more information.
If you are not using SQLite, you can remove the `--volume ...:...` flag, unless you need it otherwise.**NOTE** If you want to use the [Healthchecks SMTP Listener Service](https://github.com/healthchecks/healthchecks#receiving-emails), add `--publish 2525:2525` flag (the port inside the container `2525/tcp` cannot be changed).
The port of Healthchecks in the container is `8000/tcp` it will be exposed to `80/tcp` in the example command.
A HTTPS Proxy is required for healthchecks to be reachable.
This is caused by the CSRF verification failing if HTTPS is not used.
The HTTPS Proxy must pass through/create `X-FORWARDED-*` headers.
An example for a simple HTTPS proxy for Docker can be found here: [GitHub - jwilder/nginx-proxy](https://github.com/jwilder/nginx-proxy).### Running In Production
Please checkout the official [healthchecks/healthchecks Project Running in Production guide](https://github.com/healthchecks/healthchecks#running-in-production) for information on a secure configuration.
### Database Configuration
**The default setting uses SQLite** unless configured otherwise.
**WARNING** For SQLite the `DB_NAME` must be set to this `/data/hc.sqlite`. A volume should be mounted to `/data` (`docker run [...] --volume /opt/docker/healthchecks/data:/data [...] galexrt/healthchecks:latest`) inside the container as otherwise the SQLite database is lost on container deletion.
#### Want to use MySQL or Postgres?
The following environment variables can be used to configure the database connection:
| Variable | Description |
| ------------- | ------------------------------------------------------------- |
| `DB` | Can be `postgres`, `mysql`, `sqlite3` (defaults to `sqlite3`) |
| `DB_HOST` | Database host address |
| `DB_PORT` | Database host port |
| `DB_NAME` | Database name |
| `DB_USER` | Database user |
| `DB_PASSWORD` | Database user password |(See https://github.com/healthchecks/healthchecks/blob/master/hc/settings.py#L100-L142)
[The `docker-compose.yml` shows an example of the environment variables for using a MySQL database server.](docker-compose.yml)
### Email Configuration
The following environment variables can be used to configure the email notifications (uses SMTP):
| Variable | Description |
| --------------------- | ------------------------------ |
| `EMAIL_HOST` | SMTP host address |
| `EMAIL_PORT` | SMTP host port |
| `EMAIL_USE_TLS` | If tls should be used for SMTP |
| `EMAIL_USE_SSL` | If ssl should be used for SMTP |
| `EMAIL_HOST_USER` | SMTP user |
| `EMAIL_HOST_PASSWORD` | SMTP user password |(See https://github.com/healthchecks/healthchecks/blob/master/hc/settings.py#L173-L179)
### Environment Configuration Variables
The following environment variables can be used to configure some "special" values for Healthchecks:
| Variable | Description |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ALLOWED_HOSTS` | Comma separated list of the allowed hosts, should be the hostnames the healthchecks container is reachable as for the Docker healthcheck to work, must include `localhost` |
| `SECRET_KEY` | Set to a random secret value (if unset or changed sessions are invalidated) |
| `CONTAINER_PRUNE_INTERVAL`| Time in seconds between executions of `prunepings`, `prunenotifications`, `pruneflips` and `prunetokenbucket` (default: 600 seconds) |### Other Configuration Variables
Checkout the [`healthchecks/healthchecks settings.py`](https://github.com/healthchecks/healthchecks/blob/master/hc/settings.py), if you want to set one of these variable as a setting you simply set it as an environment variable on the container.
Example for variable `SLACK_CLIENT_ID`, you would add environment variable `SLACK_CLIENT_ID` for the container.
### Run `python manage.py` inside the container
You need the container name or id of the healthchecks instance. You can get it by running `docker ps` and searching for the container running healthchecks.
```bash
docker exec -it CONTAINER_NAME /entrypoint.sh app:managepy YOUR_MANAGE_PY_FLAGS_COMMAND
```### Activating Telegram Bot and other Bots
Use the command from the last section and for `YOUR_MANAGE_PY_FLAGS_COMMAND` use this:
```bash
settelegramwebhook
```**Example**:
```bash
docker exec -it CONTAINER_NAME /entrypoint.sh app:managepy settelegramwebhook
```For this to work, you need to have set the following variables:
* `SITE_NAME`
* `TELEGRAM_TOKEN`#### Other Bots
Unless not specified otherwise in documentation of the [healthchecks/healthchecks
GitHub](https://github.com/healthchecks/healthchecks) project, you just need to set the environment variables on
the Docker container and you are done (after a restart).### Turn Off Debug Mode / Run In Production Mode
Add the env var `DEBUG: "false"` to your Docker container.
```bash
docker run \
[...]
--env 'DEBUG=false' \
[...]
```### Create Superuser in Healthchecks
You need the container name or id of the healthchecks container instance. You can get it by running `docker ps` and searching for the container running healthchecks.
```bash
docker exec -it CONTAINER_NAME python3 /healthchecks/manage.py createsuperuser
```Follow the assistant that will show up to create a healthchecks superuser.
### docker-compose
[Example `docker-compose.yml`](docker-compose.yml):
```yaml
version: '3'
services:
hc:
image: quay.io/galexrt/healthchecks:main
restart: always
ports:
- "8000:8000"
volumes:
- SQLite:/data
environment:
# DB_NAME must be set like this for the /data volume to be used
# otherwise when using SQLite for the database, all data is **lost**
# on container deletion / recreation.
DB_NAME: "/data/hc.sqlite"
SECRET_KEY: "blablabla123"
ALLOWED_HOSTS: 'localhost,healthchecks.example.com'
DEBUG: "False"
DEFAULT_FROM_EMAIL: "[email protected]"
USE_PAYMENTS: "False"
REGISTRATION_OPEN: "False"
EMAIL_HOST: ""
EMAIL_PORT: "587"
EMAIL_HOST_USER: ""
EMAIL_HOST_PASSWORD: ""
EMAIL_USE_TLS: "True"
SITE_ROOT: "https://hc.example.com"
SITE_NAME: "Mychecks"
MASTER_BADGE_LABEL: "Mychecks"
PING_ENDPOINT: "https://hc.example.com/ping/"
PING_EMAIL_DOMAIN: "hc.example.com"
TWILIO_ACCOUNT: "None"
TWILIO_AUTH: "None"
TWILIO_FROM: "None"
PD_VENDOR_KEY: "None"
TRELLO_APP_KEY: "None"
CONTAINER_PRUNE_INTERVAL: 600
# Remove when not using SQLite
volumes:
SQLite:
```## Release
1. Run `make release` locally.
2. Wait for completion.
3. Container images will be pushed automatically to the registries.