mirror of
https://github.com/containers/podman-compose.git
synced 2025-04-27 02:49:05 +02:00
Added a way to start containers with multiple ips and nets
Signed-off-by: KuhnChris <kuhnchris@kuhnchris.eu>
This commit is contained in:
parent
1cb608d8a7
commit
a9723ec1cf
@ -822,12 +822,18 @@ def get_net_args(compose, cnt):
|
|||||||
# release.
|
# release.
|
||||||
ip = None
|
ip = None
|
||||||
ip6 = None
|
ip6 = None
|
||||||
|
ip_assignments = 0
|
||||||
if cnt_nets and is_dict(cnt_nets):
|
if cnt_nets and is_dict(cnt_nets):
|
||||||
prioritized_cnt_nets = []
|
prioritized_cnt_nets = []
|
||||||
# cnt_nets is {net_key: net_value, ...}
|
# cnt_nets is {net_key: net_value, ...}
|
||||||
for net_key, net_value in cnt_nets.items():
|
for net_key, net_value in cnt_nets.items():
|
||||||
net_value = net_value or {}
|
net_value = net_value or {}
|
||||||
aliases.extend(norm_as_list(net_value.get("aliases", None)))
|
aliases.extend(norm_as_list(net_value.get("aliases", None)))
|
||||||
|
if net_value.get("ipv4_address", None) != None:
|
||||||
|
ip_assignments = ip_assignments + 1
|
||||||
|
if net_value.get("ipv6_address", None) != None:
|
||||||
|
ip_assignments = ip_assignments + 1
|
||||||
|
|
||||||
if not ip:
|
if not ip:
|
||||||
ip = net_value.get("ipv4_address", None)
|
ip = net_value.get("ipv4_address", None)
|
||||||
if not ip6:
|
if not ip6:
|
||||||
@ -854,6 +860,29 @@ def get_net_args(compose, cnt):
|
|||||||
)
|
)
|
||||||
net_names.append(net_name)
|
net_names.append(net_name)
|
||||||
net_names_str = ",".join(net_names)
|
net_names_str = ",".join(net_names)
|
||||||
|
|
||||||
|
if ip_assignments > 1:
|
||||||
|
multipleNets = cnt.get("networks", None)
|
||||||
|
multipleNetNames = multipleNets.keys()
|
||||||
|
|
||||||
|
for net_ in multipleNetNames:
|
||||||
|
net_desc = nets[net_] or {}
|
||||||
|
is_ext = net_desc.get("external", None)
|
||||||
|
ext_desc = is_ext if is_dict(is_ext) else {}
|
||||||
|
default_net_name = net_ if is_ext else f"{proj_name}_{net_}"
|
||||||
|
net_name = (
|
||||||
|
ext_desc.get("name", None) or net_desc.get("name", None) or default_net_name
|
||||||
|
)
|
||||||
|
|
||||||
|
ipv4 = multipleNets[net_].get("ipv4_address",None)
|
||||||
|
ipv6 = multipleNets[net_].get("ipv6_address",None)
|
||||||
|
if ipv4 is not None and ipv6 is not None:
|
||||||
|
net_args.extend(["--network", f"{net_name}:ip={ipv4},ip={ipv6}"])
|
||||||
|
elif ipv4 is None and ipv6 is not None:
|
||||||
|
net_args.extend(["--network", f"{net_name}:ip={ipv6}"])
|
||||||
|
elif ipv6 is None and ipv4 is not None:
|
||||||
|
net_args.extend(["--network", f"{net_name}:ip={ipv4}"])
|
||||||
|
else:
|
||||||
if is_bridge:
|
if is_bridge:
|
||||||
net_args.extend(["--net", net_names_str, "--network-alias", ",".join(aliases)])
|
net_args.extend(["--net", net_names_str, "--network-alias", ",".join(aliases)])
|
||||||
if ip:
|
if ip:
|
||||||
|
Loading…
Reference in New Issue
Block a user