What Am I Doing Wrong?

If I run this

#!/bin/bash

ARCH=$(python fetch_architecture.py)
if [ $ARCH == "aarch64" -o $ARCH == "armv71" ] ; then
    export PATH=/opt/local/llvm/bin:${PATH}
    cd /app
    RUSTFLAGS="-C linker=lld" wasm-pack build --target web --release plume-front
else
    wasm-pack build --target web --release plume-front
fi

via the terminal, it works just fine. But when I run it via the Dockerfile,

COPY . . 
RUN cargo install wasm-pack 
RUN chmod a+x ./script/plume-front.sh 
RUN sleep 1 
RUN ./script/plume-front.sh

It says python: command not found and then [: too many arguments

friend_of_satan , (edited )

Python is not found, so $ARCH gets assigned to "", and you didn't double quote your variables in the comparison, so the code parses as [ == "aarch64" which is a syntax error.

Also, maybe uname -m could work instead of that Python script.

sabreW4K3 OP ,
@sabreW4K3@lazysoci.al avatar

This was super insightful. Thank you so much.

wasabi , (edited )

This is a docker/bash question, not a python question. Also reading the error message explains the problem.

sabreW4K3 OP ,
@sabreW4K3@lazysoci.al avatar

Apologies, I thought it was Python because I was trying to execute a Python script. And double sorry for not knowing how to interpret the error message.

thenextguy ,

Python is not on the Path for docker. The error message "python: command not found" is then passed to the [ command (also called test) which says too many arguments.

Add the path /use/bin/ to your python command. Or figure out why it isn't on the docker path.

sabreW4K3 OP ,
@sabreW4K3@lazysoci.al avatar

Thank you so much.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • [email protected]
  • kbinchat
  • All magazines