How to use bash with an Alpine based docker image?

I created a docker image from openjdk:8-jdk-alpine but when I try to execute simple commands I get the following errors:

RUN bash
/bin/sh: bash: not found

RUN ./gradlew build
env: can't execute 'bash': No such file or directory

  • Docker alpine image : ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2 “No such file or directory”)
  • How to check if docker machine exists programmatically?
  • Running a shell script that runs a python program, then an R program
  • Unable to run docker commands after new docker installation
  • Use container environment variable in docker run without using bash -c
  • Automatically enter only running docker container
  • How to ssh into docker-machine VirtualBox instance?
  • babel-watch doesn't work from docker container on windows host when mounting a host directory as a network share
  • how force deleting docker image affects existing containers using it
  • How to authenticate docker hub api request?
  • Docker image corruption? Remove layers?
  • How to display output in a simple dockerized Python application?
  • 3 Solutions collect form web for “How to use bash with an Alpine based docker image?”

    Alpine docker image doesn’t have bash installed by default. You will need to add following commands to get bash:

    RUN apk update && apk add bash
    

    If youre using Alpine 3.3+ then you can just do

    RUN apk add --no-cache bash
    

    to keep docker image size small. (Thanks to comment from @sprkysnrky)

    RUN /bin/sh -c "apk add --no-cache bash"
    

    worked for me.

    Try using RUN /bin/sh instead of bash.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.