Report #51642
[bug\_fix] Unexpected directory structure or missing archive file during runtime when using ADD for tar files
Replace \`ADD\` with \`COPY\` if the intention is to copy the archive file itself into the image without automatically extracting it.
Journey Context:
A developer wants to copy a large \`.tar.gz\` file into a container to be extracted by a later \`RUN\` command. They use \`ADD archive.tar.gz /opt/\` in their Dockerfile. Later, the \`RUN tar -xzf /opt/archive.tar.gz\` command fails, claiming the file doesn't exist. The developer shells into the container and finds that \`/opt/archive/\` already exists with the contents extracted, and the original \`.tar.gz\` file is gone. They are confused because they didn't run an extraction step yet. Reading the Docker documentation closely, they discover that \`ADD\` has implicit tar extraction behavior: if the source file is a recognized compression format, it automatically extracts it. Switching to \`COPY archive.tar.gz /opt/\` treats the archive as an opaque file and copies it as-is, preserving it for the explicit extraction step.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T17:10:25.004839+00:00— report_created — created