aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2024-06-06 01:45:29 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2024-06-06 01:56:11 +0300
commitbcc6b8fc7f29a22c37b867854c71b2b6f85642dd (patch)
treed6baaf5bd750a87ddbaa6bb4c8edbcd01929d24a
parent6e903ff513003db32d13f88978a23fd9502b726f (diff)
downloadydb-bcc6b8fc7f29a22c37b867854c71b2b6f85642dd.tar.gz
Intermediate changes
-rw-r--r--library/recipes/docker_compose/lib/__init__.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/library/recipes/docker_compose/lib/__init__.py b/library/recipes/docker_compose/lib/__init__.py
index 93fe7133e7..affdb08369 100644
--- a/library/recipes/docker_compose/lib/__init__.py
+++ b/library/recipes/docker_compose/lib/__init__.py
@@ -24,7 +24,28 @@ class DockerComposeRecipeException(Exception):
super(DockerComposeRecipeException, self).__init__("[[bad]]{}[[rst]]".format(msg))
+def avoid_env_interpolation(env=None):
+ # For more info see
+ # - https://docs.docker.com/compose/compose-file/12-interpolation
+ # - https://github.com/docker/compose/issues/9704
+ # - https://st.yandex-team.ru/YA-1810
+
+ env = env or os.environ
+ replaced = []
+
+ for key, val in env.items():
+ if "$" in val:
+ replaced.append(key)
+ env[key] = re.sub(r"((^\$$)|([^\$]\$$)|(\$[^\$\{A-Za-z]))", r"\1$", val)
+
+ if replaced:
+ logger.debug("Replacing $ with $$ to avoid incorrect interpolation for %s. Fore more info see https://docs.docker.com/compose/compose-file/12-interpolation", replaced)
+ return env
+
+
def start(argv):
+ avoid_env_interpolation(env=os.environ)
+
args = _parse_args(argv)
yml_file, cwd = get_compose_file_and_cwd(argv)
@@ -78,6 +99,8 @@ def start(argv):
def stop(argv):
+ avoid_env_interpolation(env=os.environ)
+
if yatest.common.get_param("docker-pause"):
library.python.testing.recipe.tty()
try: