Field Note

Downloading Container Assets with `ADD`

docker download asset
Posted on Tuesday, November the 19th 2024
2 min read

Instead of installing curl or wget to download assets for our image builds, we may alternatively use the ADD instruction. E.g.

# Dockerfile
FROM ubuntu

ADD https://example.com/index.html /var/index.html

Now, let’s build an image using the Dockerfile above.

docker build -t add-test -f Dockerfile .

And let’s run cat /var/index.html to verify that the download was successful.

$ docker run --rm add-test cat /var/index.html 
<!doctype html>
<html>
<head>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;

    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>
</head>

<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this
    domain in literature without prior coordination or asking for permission.</p>
    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>

This approach, however, only works for simple scenarios. If you need to download an asset that requires authentication, you will still need to use an HTTP client that supports this (like curl or wget).

friedrichkurz.me

© 2025 Friedrich Kurz

Privacy Policy