added script

This commit is contained in:
Lu Baumann 2023-12-13 04:17:07 +01:00
parent c89aac328b
commit 276e157dcf
2 changed files with 42 additions and 1 deletions

3
.gitignore vendored
View File

@ -158,5 +158,6 @@ cython_debug/
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear # and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder. # option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/ .idea/
checks.yaml

40
docker-healthcheck.py Normal file
View File

@ -0,0 +1,40 @@
# /usr/bin/env python3
import requests
import yaml
import docker
import docker.errors
def read_checks() -> dict:
with open("./checks.yaml") as f:
checks = yaml.safe_load(f)
return checks
def main() -> None:
checks = read_checks()
if "self" in checks:
requests.get(checks["self"])
client = docker.from_env()
for container_id in checks:
if container_id == "self":
continue
try:
container = client.containers.get(container_id)
container_status = container.attrs["State"]["Status"]
if container_status in ["healthy", "running"]:
requests.post(checks[container_id])
else:
requests.post(
checks[container_id] + "/fail",
f"Container has status '{container_status}' which is not one of 'healthy' or 'running'"
)
except docker.errors.NotFound:
if "self" in checks:
requests.post(checks["self"] + "/fail", f"Container '{container_id}' not found.")
if __name__ == "__main__":
main()