os.Lstat在基于ubuntu的Docker容器上的已安装卷中失败

时间:2018-01-23 03:48:41

标签: docker go

我有一个使用go-bindata编译配置的docker容器。我用

运行docker容器
docker run -id \
    -v conf:/conf \
    -e CONF="/conf" \
    my-container

然后在docker容器中,我安装go-bindata,然后运行

RUN go-bindata -prefix $CONF -o $GOPATH/src/github.com/my/repo/dir/conf_generated.go $CW_CONF/config

输出

bindata: Failed to stat input path '/conf/config': lstat /conf/config: no such file or directory

This是导致错误的行。这很奇怪,因为当我进入容器并运行相同的命令时,它可以工作。 stat /conf/config也有效(它知道文件在那里)。这里发生了什么?为什么在容器构建时没有安装线工作?

1 个答案:

答案 0 :(得分:1)

看起来你在Dockerfile中声明了bindata调用。使用RUN前缀时,在没有安装卷的情况下,在容器构建期间执行该操作。如果您使用CMD前缀,它将在执行容器期间运行,然后安装卷并且它应该可以工作。