mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-07-19 12:59:24 +00:00
43 lines
1.1 KiB
Python
Executable File
43 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import os
|
|
import sys
|
|
import yaml
|
|
|
|
# arg 1 = service name
|
|
# arg 2 = number of instances
|
|
|
|
service_name = sys.argv[1]
|
|
desired_instances = int(sys.argv[2])
|
|
|
|
compose_file = os.environ["COMPOSE_FILE"]
|
|
input_file, output_file = compose_file, compose_file
|
|
|
|
config = yaml.load(open(input_file))
|
|
|
|
# The ambassadors need to know the service port to use.
|
|
# Those ports must be declared here.
|
|
ports = yaml.load(open("ports.yml"))
|
|
|
|
port = str(ports[service_name])
|
|
|
|
command_line = port
|
|
|
|
depends_on = []
|
|
|
|
for n in range(1, 1+desired_instances):
|
|
config["services"]["{}{}".format(service_name, n)] = config["services"][service_name]
|
|
command_line += " {}{}:{}".format(service_name, n, port)
|
|
depends_on.append("{}{}".format(service_name, n))
|
|
|
|
config["services"][service_name] = {
|
|
"image": "jpetazzo/hamba",
|
|
"command": command_line,
|
|
"depends_on": depends_on,
|
|
}
|
|
if "networks" in config["services"]["{}1".format(service_name)]:
|
|
config["services"][service_name]["networks"] = config["services"]["{}1".format(service_name)]["networks"]
|
|
|
|
yaml.safe_dump(config, open(output_file, "w"), default_flow_style=False)
|
|
|