运行 来自 alpine 的 bash 脚本 docker

Running a bash script from alpine based docker

我的 Dockerfile 包含:

FROM alpine

COPY script.sh /script.sh

CMD ["./script.sh"]

和一个script.sh(具有可执行权限):

#!/bin/bash
echo "hello world from script file"

当我运行

docker run --name testing fff0e5c81ca0

其中fff0e5c81ca0是构建后的id,报错

standard_init_linux.go:195: exec user process caused "no such file or directory"

那我该如何解决呢?

要在基于 alpine 的图像中运行一个bash 脚本,您需要执行其中一个

  1. 安装bash

    $ RUN apk add --update bash
    
  2. 在脚本中使用 #!/bin/sh 而不是 #!/bin/bash

你需要做这两个或两个中的任何一个

或者,就像@Maroun 在 中的回答一样,您可以更改您的 CMD 以执行您的 bash 脚本

CMD ["sh", "./script.sh"]

您的 Dockerfile 可能如下所示:

FROM openjdk:8u171-jre-alpine3.8
COPY script.sh /script.sh
CMD ["sh", "./script.sh"]