在dockerfile中使用多个命令

时间:2018-07-31 09:04:09

标签: docker dockerfile

我的Dockerfile内容如下:

FROM amd64/ubuntu:xenial-20180726

ARG GETH_REPO="https://github.com/ethereum/go-ethereum"
ARG GETH_VERSION="v1.8.12"


CMD ["/bin/bash", "-c", "git clone ${GETH_REPO} && \ 
        cd go-ethereum && \
        git fetch origin ${GETH_VERSION} && \
        git checkout ${GETH_VERSION} && \
        make geth && \
        touch /var/log/geth_log"]

基本上,我想从存储库下载并构建。 但是,当我运行创建的图像时,出现以下错误

$ docker run -it <imageid>
/bin/sh: 1: [/bin/bash,: not found

我已确保可以通过登录到运行中的容器来执行这些操作。

我想念什么吗?

1 个答案:

答案 0 :(得分:1)

您的json语法无效,因此docker将其作为带外壳程序的字符串运行,而不是执行它。您的命令中没有需要bash的内容,因此可以将默认/ bin / sh与字符串语法一起使用:

FROM amd64/ubuntu:xenial-20180726

ARG GETH_REPO="https://github.com/ethereum/go-ethereum"
ARG GETH_VERSION="v1.8.12"

RUN git clone ${GETH_REPO} && \ 
        cd go-ethereum && \
        git fetch origin ${GETH_VERSION} && \
        git checkout ${GETH_VERSION} && \
        make geth && \
        touch /var/log/geth_log

请注意,所有步骤都将作为容器的默认启动命令运行,而不是在构建时执行。您可能想用RUN替换CMD。