1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

fix conversion of anonymous volumes in compose-file

the `convertVolumeToMount()` function did not take
anonymous volumes into account when converting
volume specifications to bind-mounts.

this resulted in the conversion to try to
look up an empty "source" volume, which
lead to an error;

    undefined volume:

this patch distinguishes "anonymous"
volumes from bind-mounts and named-volumes,
and skips further processing if no source
is defined (i.e. the volume is "anonymous").

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2017-01-03 21:22:07 +01:00
parent 3e0df05ec4
commit 36c0b59149
No known key found for this signature in database
GPG key ID: 76698F39D527CE8C
2 changed files with 30 additions and 1 deletions

View file

@ -359,7 +359,15 @@ func convertVolumeToMount(
case 1:
target = parts[0]
default:
return mount.Mount{}, fmt.Errorf("invald volume: %s", volumeSpec)
return mount.Mount{}, fmt.Errorf("invalid volume: %s", volumeSpec)
}
if source == "" {
// Anonymous volume
return mount.Mount{
Type: mount.TypeVolume,
Target: target,
}, nil
}
// TODO: catch Windows paths here

View file

@ -0,0 +1,21 @@
package stack
import (
"testing"
composetypes "github.com/aanand/compose-file/types"
"github.com/docker/docker/api/types/mount"
"github.com/docker/docker/pkg/testutil/assert"
)
func TestConvertVolumeToMountAnonymousVolume(t *testing.T) {
stackVolumes := map[string]composetypes.VolumeConfig{}
namespace := namespace{name:"foo"}
expected := mount.Mount{
Type: mount.TypeVolume,
Target: "/foo/bar",
}
mnt, err := convertVolumeToMount("/foo/bar", stackVolumes, namespace)
assert.NilError(t, err)
assert.DeepEqual(t, mnt, expected)
}