import os
import time
import docker

from restic_volume_backup.config import Config


def run(image: str, command: str):
    config = Config()
    client = docker.DockerClient(base_url=config.docker_base_url)

    container = client.containers.run(
        image,
        command,
        labels={"restic-volume-backup.backup_process": 'True'},
        auto_remove=True,
        detach=True,
        environment={
            'test1': 'value1',
            'test2': 'value2',
        },
        volumes={
            '/home/user1/': {'bind': '/mnt/vol2', 'mode': 'rw'},
            '/var/www': {'bind': '/mnt/vol1', 'mode': 'ro'},
        },
        working_dir=os.getcwd(),
    )

    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")