From 515ed5a2790e1a5d957c4e8ef53e6eb67e781c27 Mon Sep 17 00:00:00 2001 From: CaptainIRS <36656347+CaptainIRS@users.noreply.github.com> Date: Thu, 10 Mar 2022 21:32:57 +0530 Subject: [PATCH] feat: Add production scripts and files --- scripts/cc-driver.service | 12 +++++++++ scripts/cc-killer.service | 13 ++++++++++ scripts/killer.py | 52 +++++++++++++++++++++++++++++++++++++++ scripts/pull-images.sh | 8 ++++++ 4 files changed, 85 insertions(+) create mode 100644 scripts/cc-driver.service create mode 100644 scripts/cc-killer.service create mode 100644 scripts/killer.py create mode 100755 scripts/pull-images.sh diff --git a/scripts/cc-driver.service b/scripts/cc-driver.service new file mode 100644 index 0000000..8da35c6 --- /dev/null +++ b/scripts/cc-driver.service @@ -0,0 +1,12 @@ +[Unit] +Description=Driver of CodeCharacter 2022 +Requires=docker.service + +[Service] +ExecStart=/home/cc22/codecharacter-driver-2022/codecharacter-driver-2022 +WorkingDirectory=/home/cc22/codecharacter-driver-2022 +Restart=always + + +[Install] +WantedBy=multi-user.target diff --git a/scripts/cc-killer.service b/scripts/cc-killer.service new file mode 100644 index 0000000..9a288ae --- /dev/null +++ b/scripts/cc-killer.service @@ -0,0 +1,13 @@ +[Unit] +Description=Docker Killer +Requires=docker.service + +[Service] +ExecStart=python3 killer.py +WorkingDirectory=/home/cc22 +Restart=always +User=cc22 + + +[Install] +WantedBy=multi-user.target diff --git a/scripts/killer.py b/scripts/killer.py new file mode 100644 index 0000000..03da0c2 --- /dev/null +++ b/scripts/killer.py @@ -0,0 +1,52 @@ +from time import sleep, time +import docker +from datetime import datetime +import docker, dateparser + +client = docker.from_env() + + +def compare_time(container_started_at): + dt = dateparser.parse(container_started_at).timestamp() + # get currrent timestamp + now = time() + interval = now - dt + return interval + + +tags = [ + "ghcr.io/delta/codecharacter-cpp-compiler", + "ghcr.io/delta/codecharacter-cpp-runner", + "ghcr.io/delta/codecharacter-java-compiler", + "ghcr.io/delta/codecharacter-java-runner", + "ghcr.io/delta/codecharacter-python-runner", + "ghcr.io/delta/codecharacter-simulator", +] + + +def check_containers(): + print("Checking containers now at", time()) + for c in client.containers.list(): + # tag of the container + tag = c.image.tags[0].split(":")[0] + start_at = c.attrs["State"]["StartedAt"] + interval = compare_time(start_at) + deleteable = False + if tag in tags and interval > 15: + + try: + print( + c.name + " (" + c.id + ") " + str(c.image) + " " + str(deleteable) + ) + client.containers.get(c.id).kill() + print("Deleted: " + c.name) + except docker.errors.NotFound: + print("Not Found ", c) + pass + else: + continue + + +while True: + check_containers() + sleep(15) diff --git a/scripts/pull-images.sh b/scripts/pull-images.sh new file mode 100755 index 0000000..f1fb803 --- /dev/null +++ b/scripts/pull-images.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +docker pull ghcr.io/delta/codecharacter-cpp-compiler:latest \ + ghcr.io/delta/codecharacter-cpp-runner:latest \ + ghcr.io/delta/codecharacter-java-runner:latest \ + ghcr.io/delta/codecharacter-python-runner:latest \ + ghcr.io/delta/codecharacter-java-compiler:latest \ + ghcr.io/delta/codecharacter-simulator:latest \ No newline at end of file