tbaldw02
tbaldw02

Reputation: 163

Pass arguments into script being ran via Dockerfile during build

I have a script or "console" that starts during my docker build via my Dockerfile. When this is ran, it runs fine and opens its interactive prompt. My problem is, I can't seem to pass commands into that interactive prompt.

Here is the part of my dockerfile that matters:

    RUN ./iiq console
    RUN import init.xml
    RUN quit

I expect to see dependencies from init.xml brought in but instead I get:

Step 24/26 : RUN ./iiq console
 ---> Running in d1bf75e69674
Setting iiq.hostname to d1bf75e69674-console
> Removing intermediate container d1bf75e69674
 ---> 3832361dee0e
Step 25/26 : RUN import init.xml
 ---> Running in 8a3cd63c7789
/bin/sh: import: command not found

The greater than sign in the steps is opening this console and waiting for input it seems, I'm just not sure how to properly send it in. I can build my container without this step and do it manually so it works that way.

Upvotes: 1

Views: 600

Answers (1)

Adiii
Adiii

Reputation: 60074

The Docker build process is completely non-interactive.

Interactive command in Dockerfile

But I do this in a different, you may try this in your script.

testargs.sh

#!/bin/ash

echo "Arg is $1"

Here is my Dockerfile

FROM alpine
copy testargs.sh /testargs.sh
RUN chmod +x /testargs.sh
ARG arg1
RUN ./testargs.sh $arg1

Now Build the above dockerfile.

docker build --no-cache --build-arg arg1=testingarg1 -t test .

As you can see it's not interactive but at least it accepts the dynamic argument.

enter image description here

Upvotes: 1

Related Questions