Working container spawner

This commit is contained in:
Einar Forselv 2019-04-17 04:38:15 +02:00
parent 7a647c06b7
commit 357e387ed2
4 changed files with 30 additions and 7 deletions

View File

@ -1,18 +1,19 @@
import os
import time
import docker
from restic_volume_backup.config import Config
def run():
def run(image: str, command: str):
config = Config()
client = docker.DockerClient(base_url=config.docker_base_url)
container = client.containers.run(
'restic-volume-backup_backup',
'echo "Hello"',
image,
command,
labels={"restic-volume-backup.backup_process": 'True'},
auto_remove=True,
remove=True,
detach=True,
environment={
'test1': 'value1',
@ -25,4 +26,14 @@ def run():
working_dir=os.getcwd(),
)
# Pull logs and exist status of container
print("Backup process container:", container.name)
logs = container.logs(stdout=True, stderr=True, stream=True)
try:
while True:
time.sleep(3)
for line in logs:
print(line.decode(), end='')
# Raises requests.exceptions.HTTPError if continer is dead
container.top()
except Exception as ex:
print("Container stopped")

View File

@ -25,11 +25,20 @@ def main():
print()
elif args.action == 'backup':
print("Starting backup ..")
if containers.backup_process_running:
raise ValueError("Backup process alredy running")
print("Initializing repository")
# TODO: Errors when repo already exists
restic.init_repo(config.repository)
backup_runner.run()
print("Starting backup container..")
backup_runner.run(
containers.this_container.image,
# "sleep 10",
'./test.sh',
)
# for vol in containers.backup_volumes():
# restic.backup_volume(Config.repository, vol)

View File

@ -15,6 +15,7 @@ class Container:
def __init__(self, data):
self.id = data.get('Id')
self.state = data.get('State')
self.image = data.get('Image')
self.labels = data.get('Labels', {})
self.names = data.get('Names', [])
self.mounts = [Mount(mnt, container=self) for mnt in data.get('Mounts')]

2
test.sh Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
for i in 1 2 3 4 5; do echo 'moo'; sleep 2; done