2019-04-17 01:28:07 +00:00
|
|
|
import os
|
2019-04-17 02:38:15 +00:00
|
|
|
import time
|
2019-04-17 01:28:07 +00:00
|
|
|
import docker
|
|
|
|
|
|
|
|
from restic_volume_backup.config import Config
|
|
|
|
|
2019-04-17 02:38:15 +00:00
|
|
|
|
|
|
|
def run(image: str, command: str):
|
2019-04-17 01:45:51 +00:00
|
|
|
config = Config()
|
|
|
|
client = docker.DockerClient(base_url=config.docker_base_url)
|
2019-04-17 01:28:07 +00:00
|
|
|
|
|
|
|
container = client.containers.run(
|
2019-04-17 02:38:15 +00:00
|
|
|
image,
|
|
|
|
command,
|
2019-04-17 01:45:51 +00:00
|
|
|
labels={"restic-volume-backup.backup_process": 'True'},
|
2019-04-17 01:28:07 +00:00
|
|
|
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(),
|
|
|
|
)
|
|
|
|
|
2019-04-17 02:38:15 +00:00
|
|
|
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")
|