diff --git a/internal/provider/resource_docker_image.go b/internal/provider/resource_docker_image.go index 6e977384..50e28029 100644 --- a/internal/provider/resource_docker_image.go +++ b/internal/provider/resource_docker_image.go @@ -1,6 +1,8 @@ package provider import ( + "context" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) @@ -10,6 +12,12 @@ func resourceDockerImage() *schema.Resource { ReadContext: resourceDockerImageRead, UpdateContext: resourceDockerImageUpdate, DeleteContext: resourceDockerImageDelete, + Importer: &schema.ResourceImporter{ + StateContext: func(_ context.Context, d *schema.ResourceData, m interface{}) ([]*schema.ResourceData, error) { + d.Set("name", d.Id()) + return []*schema.ResourceData{d}, nil + }, + }, Schema: map[string]*schema.Schema{ "name": { diff --git a/internal/provider/resource_docker_image_funcs.go b/internal/provider/resource_docker_image_funcs.go index 55758847..bf1c6d55 100644 --- a/internal/provider/resource_docker_image_funcs.go +++ b/internal/provider/resource_docker_image_funcs.go @@ -67,12 +67,11 @@ func resourceDockerImageCreate(ctx context.Context, d *schema.ResourceData, meta } } } - apiImage, err := findImage(ctx, imageName, client, meta.(*ProviderConfig).AuthConfigs) - if err != nil { + if _, err := findImage(ctx, imageName, client, meta.(*ProviderConfig).AuthConfigs); err != nil { return diag.Errorf("Unable to read Docker image into resource: %s", err) } - d.SetId(apiImage.ID + d.Get("name").(string)) + d.SetId(imageName) return resourceDockerImageRead(ctx, d, meta) } @@ -94,7 +93,7 @@ func resourceDockerImageRead(ctx context.Context, d *schema.ResourceData, meta i return nil } - d.SetId(foundImage.ID + d.Get("name").(string)) + d.SetId(imageName) d.Set("latest", foundImage.ID) return nil } diff --git a/website/docs/r/image.html.markdown b/website/docs/r/image.html.markdown index 786b7bd0..d76c02fd 100644 --- a/website/docs/r/image.html.markdown +++ b/website/docs/r/image.html.markdown @@ -98,3 +98,11 @@ The `build` block supports: The following attributes are exported in addition to the above configuration: * `latest` (string) - The ID of the image. + +## Import + +Docker images can be imported using image name, e.g. for an image named `alpine:3.13.0`: + +```sh +$ terraform import docker_image.alpine alpine:3.13.0 +```