From 8310ecb63fde0ad9b6008c67ddd6f8aee7e25f00 Mon Sep 17 00:00:00 2001 From: Tom Deseyn Date: Fri, 16 Jul 2021 05:19:02 +0200 Subject: [PATCH] DockerRunner: podman workaround: create volume host dir when it doesn't exist. (#1062) --- src/Microsoft.Tye.Core/ContainerEngine.cs | 1 + src/Microsoft.Tye.Hosting/DockerRunner.cs | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/Microsoft.Tye.Core/ContainerEngine.cs b/src/Microsoft.Tye.Core/ContainerEngine.cs index 2351a380..d08c64ae 100644 --- a/src/Microsoft.Tye.Core/ContainerEngine.cs +++ b/src/Microsoft.Tye.Core/ContainerEngine.cs @@ -31,6 +31,7 @@ namespace Microsoft.Tye public string AspNetUrlsHost => _aspnetUrlsHost; public string? ContainerHost => _containerHost; + public bool IsPodman => _isPodman; public Task ExecuteAsync( string args, diff --git a/src/Microsoft.Tye.Hosting/DockerRunner.cs b/src/Microsoft.Tye.Hosting/DockerRunner.cs index 4a235285..213332c5 100644 --- a/src/Microsoft.Tye.Hosting/DockerRunner.cs +++ b/src/Microsoft.Tye.Hosting/DockerRunner.cs @@ -285,6 +285,15 @@ namespace Microsoft.Tye.Hosting if (volumeMapping.Source != null) { var sourcePath = Path.GetFullPath(Path.Combine(application.ContextDirectory, volumeMapping.Source)); + if (application.ContainerEngine.IsPodman) + { + // unlike docker, podman doesn't create the host directory when it doesn't exist. + // https://github.com/containers/podman/issues/10471 + if (!File.Exists(sourcePath) && !Directory.Exists(sourcePath)) + { + Directory.CreateDirectory(sourcePath); + } + } volumes += $"-v \"{sourcePath}:{volumeMapping.Target}:{(volumeMapping.ReadOnly ? "ro," : "")}z\" "; } else if (volumeMapping.Name != null)