mirror of
https://github.com/DerTyp7/docker_minecraft_server_auto_starter.git
synced 2025-10-29 12:42:09 +01:00
Update Dockerfile, settings.json, utils.py, nginx-example.conf, docker-compose.yml, and app.py
This commit is contained in:
57
app/objects/minecraftServer.py
Normal file
57
app/objects/minecraftServer.py
Normal file
@@ -0,0 +1,57 @@
|
||||
import docker
|
||||
import logging
|
||||
|
||||
|
||||
from dockerHandler import DockerHandler
|
||||
|
||||
|
||||
class MinecraftServer:
|
||||
def __init__(self, docker_handler: DockerHandler, service_name: str):
|
||||
self.docker_handler: DockerHandler = docker_handler
|
||||
self.service_name: str = service_name
|
||||
|
||||
def get_container(self):
|
||||
return self.docker_handler.get_container_by_service_name(
|
||||
self.service_name)
|
||||
|
||||
def start(self) -> None:
|
||||
self.docker_handler.start_container(
|
||||
self.get_container())
|
||||
|
||||
def stop(self) -> None:
|
||||
self.docker_handler.stop_container(
|
||||
self.get_container())
|
||||
|
||||
def is_starting(self) -> bool:
|
||||
if self.get_container():
|
||||
return self.get_container().attrs['State']['Health']['Status'] == 'starting'
|
||||
return False
|
||||
|
||||
def is_running(self) -> bool:
|
||||
if self.get_container():
|
||||
return self.get_container().attrs['State']['Health']['Status'] == 'healthy'
|
||||
return False
|
||||
|
||||
def get_ip(self) -> str | None:
|
||||
try:
|
||||
containers = self.docker_handler.client.containers.list(
|
||||
all=True, filters={"network": self.docker_handler.current_network})
|
||||
|
||||
if containers is None:
|
||||
logging.info('[MinecraftServer] no containers found')
|
||||
return None
|
||||
for container in containers:
|
||||
networks = container.attrs['NetworkSettings']['Networks']
|
||||
if self.docker_handler.current_network in networks and self.service_name in networks[self.docker_handler.current_network]['Aliases']:
|
||||
ip = networks[self.docker_handler.current_network]['IPAddress']
|
||||
logging.info(
|
||||
f'[MinecraftServer] found container {container.name} with service name {self.service_name} with ip {ip} in network {self.docker_handler.current_network}')
|
||||
return ip
|
||||
logging.info(
|
||||
f'[MinecraftServer] no docker container found with service name {self.service_name} in network {self.docker_handler.current_network}')
|
||||
return None
|
||||
|
||||
except docker.errors.APIError as e:
|
||||
logging.error(
|
||||
f'[MinecraftServer] error getting container list: {e}')
|
||||
return None
|
||||
Reference in New Issue
Block a user