41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
import os
|
|
import yaml
|
|
|
|
def load_existing_compose(file_path):
|
|
try:
|
|
with open(file_path, 'r') as f:
|
|
return yaml.safe_load(f)
|
|
except FileNotFoundError:
|
|
return None
|
|
|
|
def create_compose_config(service_name):
|
|
# Beispieldaten basierend auf dem Service
|
|
image_name = input("Enter image name: ")
|
|
image_tag = input("Enter image tag [latest]: ") or "latest"
|
|
subdomain = input("Enter subdomain for Traefik: ")
|
|
container_port = input("Enter container port [80]: ") or "80"
|
|
|
|
return {
|
|
'version': '3',
|
|
'services': {
|
|
service_name: {
|
|
'image': f"{image_name}:{image_tag}",
|
|
'container_name': service_name,
|
|
'restart': 'always',
|
|
'networks': ['traefik_network'],
|
|
'labels': [
|
|
"traefik.enable=true",
|
|
f"traefik.http.routers.{service_name}.rule=Host(`{subdomain}.hessenkamp-server.de`)",
|
|
f"traefik.http.routers.{service_name}.entrypoints=websecure",
|
|
f"traefik.http.routers.{service_name}.tls.certresolver=letsencrypt",
|
|
f"traefik.http.services.{service_name}.loadbalancer.server.port={container_port}"
|
|
]
|
|
}
|
|
},
|
|
'networks': {
|
|
'traefik_network': {
|
|
'external': True
|
|
}
|
|
}
|
|
}
|