Skip to content
This repository was archived by the owner on Mar 9, 2023. It is now read-only.

feat: Add production scripts and files #32

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions scripts/cc-driver.service
Original file line number Diff line number Diff line change
@@ -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
13 changes: 13 additions & 0 deletions scripts/cc-killer.service
Original file line number Diff line number Diff line change
@@ -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
52 changes: 52 additions & 0 deletions scripts/killer.py
Original file line number Diff line number Diff line change
@@ -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)
8 changes: 8 additions & 0 deletions scripts/pull-images.sh
Original file line number Diff line number Diff line change
@@ -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