Regarding the yellow “unhealthy” status, I also had the same issue with the same message:
“timeout: can’t execute bash: No such file or directory”
From what I understand, the NocoDB Docker image is a minimal base image that doesn’t support bash commands, so you’d need to use a wget or curl command instead wherever there’s a bash command in your Portainer .yaml file, especially under the nocodb > healthcheck in this case.
I checked with an AI about this since I also didn’t see an answer elsewhere online, and it suggested replacing the healthcheck test bash command in your nocodb stack’s .yaml file (if you have a bash command like this in your file):
test: timeout 10s bash -c ‘:> /dev/tcp/127.0.0.1/8080’ || exit 1
Under the services > nocodb > healthcheck block of code (example below for reference):
services:
# Your other code and settings #
nocodb:
# Your other code and settings #
healthcheck:
test: timeout 10s bash -c ‘:> /dev/tcp/127.0.0.1/8080’ || exit 1
With this wget healtcheck test command instead of the bash command:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/api/v1/health"]
Of course, if you’re using a different port other than 8080, adjust the code accordingly.
This fix worked for me and I now have a green “healthy” status on nocodb in Portainer.
I’m no expert about NocoDB, Portainer, Docker, bash, or wget, so maybe someone will have a better and more trustworthy answer. But hopefully this helps in the meantime as I was also searching for an answer to this issue myself.
I would encourage you to search up a breakdown of what each part of the wget command means or does to have a better understanding of what it’s doing and if you’d want to make any adjustments to that command.