@@ -1424,17 +1424,6 @@ def _parse_compose_file(self):
14241424 # TODO: remove next line
14251425 os .chdir (dirname )
14261426
1427- if not project_name :
1428- # More strict then actually needed for simplicity: podman requires [a-zA-Z0-9][a-zA-Z0-9_.-]*
1429- project_name = (
1430- os .environ .get ("COMPOSE_PROJECT_NAME" , None ) or dir_basename .lower ()
1431- )
1432- project_name = norm_re .sub ("" , project_name )
1433- if not project_name :
1434- raise RuntimeError (f"Project name [{ dir_basename } ] normalized to empty" )
1435-
1436- self .project_name = project_name
1437-
14381427 dotenv_path = os .path .join (dirname , args .env_file )
14391428 dotenv_dict = dotenv_to_dict (dotenv_path )
14401429 os .environ .update (
@@ -1452,7 +1441,6 @@ def _parse_compose_file(self):
14521441 {
14531442 "COMPOSE_PROJECT_DIR" : dirname ,
14541443 "COMPOSE_FILE" : pathsep .join (relative_files ),
1455- "COMPOSE_PROJECT_NAME" : self .project_name ,
14561444 "COMPOSE_PATH_SEPARATOR" : pathsep ,
14571445 }
14581446 )
@@ -1479,6 +1467,23 @@ def _parse_compose_file(self):
14791467 if len (files ) > 1 :
14801468 log (" ** merged:\n " , json .dumps (compose , indent = 2 ))
14811469 # ver = compose.get('version', None)
1470+
1471+ if not project_name :
1472+ project_name = compose .get ("name" , None )
1473+ if project_name is None :
1474+ # More strict then actually needed for simplicity: podman requires [a-zA-Z0-9][a-zA-Z0-9_.-]*
1475+ project_name = (
1476+ os .environ .get ("COMPOSE_PROJECT_NAME" , None ) or dir_basename .lower ()
1477+ )
1478+ project_name = norm_re .sub ("" , project_name )
1479+ if not project_name :
1480+ raise RuntimeError (
1481+ f"Project name [{ dir_basename } ] normalized to empty"
1482+ )
1483+
1484+ self .project_name = project_name
1485+ self .environ .update ({"COMPOSE_PROJECT_NAME" : self .project_name })
1486+
14821487 services = compose .get ("services" , None )
14831488 if services is None :
14841489 services = {}
0 commit comments