-
Notifications
You must be signed in to change notification settings - Fork 0
/
DockerManager.py
57 lines (53 loc) · 2.37 KB
/
DockerManager.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import subprocess
import docker
import os
import time
from UserInputManager import UserInputManager
class DockerManager:
def __init__(self):
# Ensure Docker is running if not then RUN docker
self.ensure_docker_running()
# Create a Docker client
self.client = docker.from_env()
# Method for ensuring Docker is running
def ensure_docker_running(self):
try:
# Try to get Docker info
subprocess.check_output("docker info".split())
except subprocess.CalledProcessError:
user_input_manager = UserInputManager()
# If Docker is not running, start Docker minmized
print("Docker is not running. Starting Docker...")
subprocess.Popen(['open', '-a', 'Docker'])
# os.system("osascript -e 'tell application \"Docker\" to activate' -e 'tell application \"System Events\" to click (first button of (every window of (application process \"Docker\")) whose role description is \"minimize button\")'")
print("Waiting for Docker to start...")
while True:
time.sleep(1)
try:
# Try to get Docker info until Docker starts
subprocess.check_output("docker info".split())
break
except subprocess.CalledProcessError:
continue
user_input_manager.cmd_plus('h') # Change the modifier and hotkey as needed
print("Docker started successfully.")
# Method for starting a Docker container
def start_container(self, container_name):
# Get the container
container = self.client.containers.get(container_name)
# If the container does not exist, raise an error
if container is None:
raise FileNotFoundError(f"Container: '{container_name}' does not exist")
# Start the container
container.start()
print(f"{container_name} docker container started")
# Method for stopping a Docker container
def stop_container(self, container_name):
# Get the container
container = self.client.containers.get(container_name)
# If the container does not exist, raise an error
if container is None:
raise FileNotFoundError(f"Container '{container_name}' does not exist")
# Stop the container
container.stop()
print(f"{container_name} docker container stopped")