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
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.This was super insightful. Thank you so much.
What is your base image? It has no python installed.
Rust:1.78-bookworm.
Thank you, manually included it.
You should use
python3
anyway notpython
. The latter is sometimes Python 3, sometimes Python 2 and sometimes doesn’t exist.python3
works reliably, assuming you have it installed.(And assuming you aren’t using the official Windows Python installer, but that doesn’t seem like the case here!)
I ended up adding Python3 as it moaned when I just added Python. Thank you so much for your advice though. I’m grateful.
This is a docker/bash question, not a python question. Also reading the error message explains the problem.
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.
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.
Thank you so much.
Removed by mod
Thank you so much. Especially for the Shell Check. That’s an invaluable resource.
Could you elaborate on the weird behaviour introduced by
pipefail
?Removed by mod
Thanks. Bash should just be avoided except trivial uses. It has an impressive collection of footguns. I’ve written a lot of bash, even used it for CGI scripts to create web tools, but honestly it is time to move on. Ansible and Python cover most of the bash use cases.
Removed by mod
deleted by creator