Bagaimana cara menggunakan bash dengan gambar buruh pelabuhan berbasis Alpine?


211

Saya membuat gambar buruh pelabuhan dari openjdk: 8-jdk-alpine tetapi ketika saya mencoba menjalankan perintah sederhana saya mendapatkan kesalahan berikut:

RUN bash
/bin/sh: bash: not found

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

26
Untuk googler:docker run --rm -i -t alpine /bin/sh
Nabil Kadimi

Mulai wadah (secara interaktif): docker exec -it container_id / bin / sh
user2243747

Jawaban:


337

Gambar Alpine docker tidak memiliki bash yang diinstal secara default. Anda perlu menambahkan perintah berikut untuk mendapatkan bash:

RUN apk update && apk add bash

Jika Anda menggunakan Alpine 3.3+maka Anda bisa melakukannya

RUN apk add --no-cache bash

untuk menjaga ukuran gambar buruh pelabuhan kecil. (Terima kasih atas komentar dari @sprkysnrky)


4
Tidak apk upgradediperlukan.
Matt

1
Saya lebih suka menggunakan rekomendasi menggunakan Yuva RUN /bin/shdaripada RUN bin/bash
Alex Montoya

1
Itu sepenuhnya terserah Anda, banyak orang membutuhkan bashfitur tertentu.
anubhava

219

Coba gunakan RUN /bin/shalih-alih bash.


35
OP meminta bash. sh bukan bash.
phil294

115
Tapi ini adalah komentar yang sangat berguna - kebanyakan orang akan baik-baik saja dengan sh - dan itu tidak memerlukan tambahan ukuran gambar
50MB

6
Mudah dan lugas. Seringkali kita hanya perlu menjalankan perintah buruk (ls, ps, apa pun), ia mencakup skenario itu. Terima kasih!
Bevilaqua

6
Saya sedang mencari bash, tetapi dia membantu juga :)
Vedran Maricevic.

6
@ kboom bashpaket menambahkan sekitar 4MB ke ukuran alpine:3.8, kira-kira dua kali lipat, tetapi masih jauh dari 50MB.
valiano

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

bekerja untukku.


1
Bagian awal dari perintah RUN tidak perlu. Anda bisa RUN apk add --no-cache bashlangsung menulis
Meiogordo

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.