Merge pull request #1165 from drachenfels-de/fix-project-name-interpolation

Fix `COMPOSE_PROJECT_NAME` interpolation
This commit is contained in:
Povilas Kanapickas
2025-03-20 19:26:03 +02:00
committed by GitHub
5 changed files with 80 additions and 13 deletions

View File

@@ -1980,6 +1980,25 @@ class PodmanCompose:
sys.exit(1)
content = normalize(content)
# log(filename, json.dumps(content, indent = 2))
# See also https://docs.docker.com/compose/how-tos/project-name/#set-a-project-name
# **project_name** is initialized to the argument of the `-p` command line flag.
if not project_name:
project_name = self.environ.get("COMPOSE_PROJECT_NAME")
if not project_name:
project_name = content.get("name")
if not project_name:
project_name = dir_basename.lower()
# More strict then actually needed for simplicity:
# podman requires [a-zA-Z0-9][a-zA-Z0-9_.-]*
project_name_normalized = norm_re.sub("", project_name)
if not project_name_normalized:
raise RuntimeError(f"Project name [{project_name}] normalized to empty")
project_name = project_name_normalized
self.project_name = project_name
self.environ.update({"COMPOSE_PROJECT_NAME": self.project_name})
content = rec_subs(content, self.environ)
if isinstance(services := content.get('services'), dict):
for service in services.values():
@@ -2012,19 +2031,6 @@ class PodmanCompose:
log.debug(" ** merged:\n%s", json.dumps(compose, indent=2))
# ver = compose.get('version')
if not project_name:
project_name = compose.get("name")
if project_name is None:
# More strict then actually needed for simplicity:
# podman requires [a-zA-Z0-9][a-zA-Z0-9_.-]*
project_name = self.environ.get("COMPOSE_PROJECT_NAME", dir_basename.lower())
project_name = norm_re.sub("", project_name)
if not project_name:
raise RuntimeError(f"Project name [{dir_basename}] normalized to empty")
self.project_name = project_name
self.environ.update({"COMPOSE_PROJECT_NAME": self.project_name})
services = compose.get("services")
if services is None:
services = {}