From bf052fae540725986cc7b06828fceb3fd3848f44 Mon Sep 17 00:00:00 2001 From: jaydee Date: Sun, 30 Nov 2025 15:35:00 +0100 Subject: [PATCH] build --- __swarm/pihole/pihole-swarm.yml | 33 +++++++++++++++++++++++++-------- pihole/docker-compose.yml | 6 +++--- yaml_convert.py | 17 ++++++++++------- yaml_convert2.py | 15 ++++++++++++--- 4 files changed, 50 insertions(+), 21 deletions(-) diff --git a/__swarm/pihole/pihole-swarm.yml b/__swarm/pihole/pihole-swarm.yml index 408f795..942cb48 100644 --- a/__swarm/pihole/pihole-swarm.yml +++ b/__swarm/pihole/pihole-swarm.yml @@ -1,3 +1,11 @@ +networks: + pihole: + driver: overlay + attachable: true + ipam: + config: + - subnet: 192.168.78.0/24 + driver: default services: pihole: cap_add: @@ -11,13 +19,25 @@ services: TZ: Europe/Bratislava hostname: m-server image: pihole/pihole:latest + networks: + pihole: + ipv4_address: 192.168.78.254 ports: - - 53:53 - - 9380:80 - - 9343:443 + - target: 53 + published: 53 + protocol: udp + mode: ingress + - target: 80 + published: 9380 + protocol: tcp + mode: ingress + - target: 443 + published: 9343 + protocol: tcp + mode: ingress volumes: - - pihole-etc:/etc/pihole - - pihole-dnsmasq.d:/etc/dnsmasq.d + - /share/docker_data/pihole/etc-pihole:/etc/pihole + - /share/docker_data/pihole/etc-dnsmasq.d:/etc/dnsmasq.d deploy: labels: com.centurylinklabs.watchtower.enable: 'true' @@ -39,6 +59,3 @@ services: placement: constraints: - node.role == manager -volumes: - pihole-etc: - pihole-dnsmasq.d: \ No newline at end of file diff --git a/pihole/docker-compose.yml b/pihole/docker-compose.yml index 7e05862..2f0e6f3 100755 --- a/pihole/docker-compose.yml +++ b/pihole/docker-compose.yml @@ -53,9 +53,9 @@ services: pihole: ipv4_address: 192.168.78.254 ports: - - 53:53 - - 9380:80 - - 9343:443 + - '53:53' + - '9380:80' + - '9343:443' restart: always volumes: - /share/docker_data/pihole/etc-pihole:/etc/pihole diff --git a/yaml_convert.py b/yaml_convert.py index fdaa773..30cd3ae 100644 --- a/yaml_convert.py +++ b/yaml_convert.py @@ -25,8 +25,7 @@ def convert_service(service): for key, value in service.items(): #print(key, value) # Unsupported in Swarm - if key in ["container_name", "restart", "depends_on"]: - continue + # Move labels → deploy.labels #print(f"Labels: {deploy_section['labels']}") @@ -46,11 +45,15 @@ def convert_service(service): continue swarm_service[key] = value - # for en in swarm_service['environment']: - # #print(f"Environment Variable: {en} : {swarm_service['environment'][en]}") - # print(en) - # print(swarm_service['environment'][en]) - # swarm_service['environment'][en] = str(swarm_service['environment'][en]).lower() + envir = [] + for en in swarm_service['environment']: + #print(f"Environment Variable: {en} : {swarm_service['environment'][en]}") + if "=" in en: + e = en.split("=",1)[0] + envir.append(e) + print(en) + print(swarm_service['environment'][en]) + swarm_service['environment'].appeendstr(swarm_service['environment'][en]).lower() #print("Deploy Section:") #print(swarm_service) # Merge user deploy section if present diff --git a/yaml_convert2.py b/yaml_convert2.py index 59c1f21..30109c6 100644 --- a/yaml_convert2.py +++ b/yaml_convert2.py @@ -7,7 +7,9 @@ OUTPUT_FILE = f"__swarm/{stack_name}/{stack_name}-swarm.yml" def convert_ports(ports): """Convert short port syntax to Swarm long syntax.""" result = [] + print(f"Converting ports: {ports}") for p in ports: + print(f"Port entry: {p}") if isinstance(p, str): # format: "8080:80" pub, tgt = p.split(":") @@ -45,9 +47,15 @@ def ensure_labels_as_string(labels): def convert_compose_to_swarm(data): services = data.get("services", {}) - + input(services) for name, svc in services.items(): - + print(f"Converting service: {name} , svc: {svc}") + if name in ["container_name", "restart", "depends_on"]: + continue + + svc.pop('restart', None) + svc.pop('depends_on', None) + svc.pop('container_name', None) # 1) Convert environment list → dict (strings) if "environment" in svc and isinstance(svc["environment"], list): svc["environment"] = env_list_to_dict(svc["environment"]) @@ -77,6 +85,7 @@ def convert_compose_to_swarm(data): # 6) Convert ports to long format if "ports" in svc: + input(svc) svc["ports"] = convert_ports(svc["ports"]) # 7) Remove container_name (not allowed in Swarm) @@ -87,7 +96,7 @@ def convert_compose_to_swarm(data): def main(): with open(INPUT_FILE, "r") as f: compose = yaml.safe_load(f) - + input(compose) swarm = convert_compose_to_swarm(compose) with open(OUTPUT_FILE, "w") as f: