/bin/bash: 在 alpine docker 中找不到命令

sal*_*ent 3 bash makefile jenkins docker alpine-linux

我正在尝试Makefilealpinedocker 中运行它。

SHELL := /bin/bash

build:
    GOOS=linux go build -o bin/server main.go
Run Code Online (Sandbox Code Playgroud)

我已经确定,这两个bashmakego在那里通过交互进入容器中,并检查所有的命令。

但是这个命令神秘地失败了:

+ make build
make: /bin/bash: Command not found
GOOS=linux go build -o bin/server main.go
make: /bin/bash: Command not found
make: *** [Makefile:17: build] Error 127
script returned exit code 2
Run Code Online (Sandbox Code Playgroud)

我真的很难调试它,因为它在 docker 中并且jenkins正在执行所有内容。

Bru*_*ego 7

bash使用 Alpine Package Keeper (APK)添加,请使用以下命令:

apk update
apk add --no-cache bash
Run Code Online (Sandbox Code Playgroud)

不要忘记设置bash为默认shell:

apk add --no-cache shadow
chsh -s /bin/bash
exec /bin/bash
Run Code Online (Sandbox Code Playgroud)


Ale*_*nyo 6

使用名为 apk 的包管理器,如下所示:

% docker run --rm -it alpine /bin/sh
/ #
/ # apk add --no-cache bash
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/community/x86_64/APKINDEX.tar.gz
(1/5) Installing ncurses-terminfo-base (6.0-r8)
(2/5) Installing ncurses-terminfo (6.0-r8)
(3/5) Installing ncurses-libs (6.0-r8)
(4/5) Installing readline (6.3.008-r4)
(5/5) Installing bash (4.3.46-r5)
Executing bash-4.3.46-r5.post-install
Executing busybox-1.25.1-r0.trigger
OK: 12 MiB in 16 packages
/ # which -a bash
/bin/bash
Run Code Online (Sandbox Code Playgroud)