diff --git a/docker/resource_docker_container.go b/docker/resource_docker_container.go index 176541ec..91215abb 100644 --- a/docker/resource_docker_container.go +++ b/docker/resource_docker_container.go @@ -256,10 +256,10 @@ func resourceDockerContainer() *schema.Resource { Optional: true, }, "labels": { - Type: schema.TypeMap, + Type: schema.TypeSet, Description: "User-defined key/value metadata", Optional: true, - Elem: &schema.Schema{Type: schema.TypeString}, + Elem: labelSchema, }, "driver_name": { Type: schema.TypeString, @@ -536,9 +536,10 @@ func resourceDockerContainer() *schema.Resource { }, "labels": { - Type: schema.TypeMap, + Type: schema.TypeSet, Optional: true, ForceNew: true, + Elem: labelSchema, }, "memory": { diff --git a/docker/resource_docker_container_funcs.go b/docker/resource_docker_container_funcs.go index c078e9e3..a80adfea 100644 --- a/docker/resource_docker_container_funcs.go +++ b/docker/resource_docker_container_funcs.go @@ -104,7 +104,7 @@ func resourceDockerContainerCreate(d *schema.ResourceData, meta interface{}) err } if v, ok := d.GetOk("labels"); ok { - config.Labels = mapTypeMapValsToString(v.(map[string]interface{})) + config.Labels = labelSetToMap(v.(*schema.Set)) } if value, ok := d.GetOk("healthcheck"); ok { @@ -168,7 +168,7 @@ func resourceDockerContainerCreate(d *schema.ResourceData, meta interface{}) err mountInstance.VolumeOptions.NoCopy = value.(bool) } if value, ok := rawVolumeOptions["labels"]; ok { - mountInstance.VolumeOptions.Labels = mapTypeMapValsToString(value.(map[string]interface{})) + mountInstance.VolumeOptions.Labels = labelSetToMap(value.(*schema.Set)) } // because it is not possible to nest maps if value, ok := rawVolumeOptions["driver_name"]; ok { diff --git a/docker/resource_docker_container_test.go b/docker/resource_docker_container_test.go index ed21ae5f..587fab29 100644 --- a/docker/resource_docker_container_test.go +++ b/docker/resource_docker_container_test.go @@ -1660,9 +1660,13 @@ resource "docker_container" "foo" { dns = ["8.8.8.8"] dns_opts = ["rotate"] dns_search = ["example.com"] - labels = { - env = "prod" - role = "test" + labels { + label = "env" + value = "prod" + } + labels { + label = "role" + value = "test" } log_driver = "json-file" log_opts = {