Utworzyłem obraz dokera z openjdk: 8-jdk-alpine, ale kiedy próbuję wykonać proste polecenia, pojawiają się następujące błędy:
RUN bash
/bin/sh: bash: not found
RUN ./gradlew build
env: can't execute 'bash': No such file or directory
Utworzyłem obraz dokera z openjdk: 8-jdk-alpine, ale kiedy próbuję wykonać proste polecenia, pojawiają się następujące błędy:
RUN bash
/bin/sh: bash: not found
RUN ./gradlew build
env: can't execute 'bash': No such file or directory
Odpowiedzi:
Obraz dokera Alpine nie ma domyślnie zainstalowanej wersji bash. Musisz dodać następujące polecenia, aby uzyskać bash
:
RUN apk update && apk add bash
Jeśli używasz Alpine 3.3+
, możesz po prostu zrobić
RUN apk add --no-cache bash
aby zachować niewielki rozmiar obrazu dokera. (Dzięki komentarzowi @sprkysnrky)
apk upgrade
nie jest wymagane.
RUN /bin/sh
zamiast zamiast RUN bin/bash
bash
określonej funkcji.
Spróbuj użyć RUN /bin/sh
zamiast bash.
bash
pakiet dodaje około 4 MB do rozmiaru, z alpine:3.8
grubsza podwajając go, ale wciąż daleko od 50 MB.
RUN /bin/sh -c "apk add --no-cache bash"
pracował dla mnie.
RUN apk add --no-cache bash
bezpośrednio
Aby zainstalować bash, możesz:
RUN apk add --update bash && rm -rf /var/cache/apk/*
Jeśli nie chcesz dodawać dodatkowego rozmiaru do obrazu, możesz użyć ash
lub, sh
który jest dostarczany z alpejskim.
Odniesienie: https://github.com/smebberson/docker-alpine/issues/43
docker run --rm -i -t alpine /bin/sh