Search code examples
dockerenvironment-variablesdocker-build

Docker build not recognizing environment variable passed as `build-arg`


I've looked at Can we pass ENV variables through cmd line while building a docker image through dockerfile? which shows me how to pass an environment variable with docker build. After seeing that the environment variable wasn't being defined, I looked at Passing environment variables not working with Docker but this concerns passing environment variables through docker run.

Here's my prod.Dockerfile:

FROM ubuntu:20.04

ARG SSH_PRIVATE_KEY

RUN echo "Key is $SSH_PRIVATE_KEY."

and the docker build command:

docker build -f prod.Dockerfile \
             --build-arg SHH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" \
             .

Resulting output:

Key is .

Yet the output of cat ~/.ssh/id_rsa is:

-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----

What am I missing?


Solution

  • Replace SHH_PRIVATE_KEY with SSH_PRIVATE_KEY.

    docker build -f prod.Dockerfile \
       --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" \
       .