forked from extern/podman-compose
convert build context path to absolute during final normalisation
Signed-off-by: Sergei Biriukov <svbiriukov@gmail.com>
This commit is contained in:
committed by
Muayyad Alsadi
parent
0164c1db56
commit
d1f5ac9edc
@ -1,4 +1,4 @@
|
||||
#! /usr/bin/python3
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# https://docs.docker.com/compose/compose-file/#service-configuration-reference
|
||||
@ -24,6 +24,7 @@ import json
|
||||
import glob
|
||||
|
||||
from threading import Thread
|
||||
from pathlib import Path
|
||||
|
||||
import shlex
|
||||
|
||||
@ -1297,6 +1298,28 @@ def normalize(compose):
|
||||
return compose
|
||||
|
||||
|
||||
def normalize_service_final(service: dict, project_dir: str) -> dict:
|
||||
if "build" in service:
|
||||
build = service["build"]
|
||||
context = build if is_str(build) else build.get("context", ".")
|
||||
context = str((Path(project_dir) / context).resolve())
|
||||
dockerfile = "Dockerfile"
|
||||
if "dockerfile" in service["build"]:
|
||||
dockerfile = service["build"]["dockerfile"]
|
||||
if not is_dict(service["build"]):
|
||||
service["build"] = {}
|
||||
service["build"]["dockerfile"] = dockerfile
|
||||
service["build"]["context"] = context
|
||||
return service
|
||||
|
||||
|
||||
def normalize_final(compose: dict, project_dir: str) -> dict:
|
||||
services = compose.get("services", None) or {}
|
||||
for service in services.values():
|
||||
normalize_service_final(service, project_dir)
|
||||
return compose
|
||||
|
||||
|
||||
def clone(value):
|
||||
return value.copy() if is_list(value) or is_dict(value) else value
|
||||
|
||||
@ -1603,6 +1626,7 @@ class PodmanCompose:
|
||||
compose.get("services", {}), set(args.profile)
|
||||
)
|
||||
compose["services"] = resolved_services
|
||||
compose = normalize_final(compose, self.dirname)
|
||||
self.merged_yaml = yaml.safe_dump(compose)
|
||||
merged_json_b = json.dumps(compose, separators=(",", ":")).encode("utf-8")
|
||||
self.yaml_hash = hashlib.sha256(merged_json_b).hexdigest()
|
||||
|
Reference in New Issue
Block a user