在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

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

我想念什么吗?

米奇

您的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。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章