diff --git a/internal/provider/resource_docker_container_funcs.go b/internal/provider/resource_docker_container_funcs.go index db0b3b08..3cfb29e1 100644 --- a/internal/provider/resource_docker_container_funcs.go +++ b/internal/provider/resource_docker_container_funcs.go @@ -455,9 +455,10 @@ func resourceDockerContainerCreate(ctx context.Context, d *schema.ResourceData, mode = 0o644 } hdr := &tar.Header{ - Name: file, - Mode: mode, - Size: int64(len(contentToUpload)), + Name: file, + Mode: mode, + Size: int64(len(contentToUpload)), + ModTime: time.Now(), } if err := tw.WriteHeader(hdr); err != nil { return diag.Errorf("Error creating tar archive: %s", err) diff --git a/internal/provider/resource_docker_container_test.go b/internal/provider/resource_docker_container_test.go index fb0b8aa1..c1b6d8b3 100644 --- a/internal/provider/resource_docker_container_test.go +++ b/internal/provider/resource_docker_container_test.go @@ -7,6 +7,7 @@ import ( "fmt" "io/ioutil" "os" + "os/exec" "path/filepath" "reflect" "regexp" @@ -776,6 +777,22 @@ func TestAccDockerContainer_uploadSource(t *testing.T) { return fmt.Errorf("file content is invalid") } + // we directly exec the container and print the creation timestamp + // which is easier to use the native docker sdk, by creating, running and attaching a reader to the command. + execReponse, err := exec.Command("docker", "exec", "-t", "tf-test", "find", "/terraform", "-maxdepth", "1", "-name", "test.txt", "-printf", "%CY-%Cm-%Cd").Output() + if err != nil { + return fmt.Errorf("Unable to exec command: %s", err) + } + + fileCreationTime, err := time.Parse("2006-01-02", string(execReponse)) + if err != nil { + return fmt.Errorf("Unable to parse file creation time into format: %s", err) + } + + if fileCreationTime.IsZero() { + return fmt.Errorf("file creation time is zero: %s", err) + } + return nil }