os.Lstat在基于ubuntu的Docker容器上的已装入卷中失败
I have a docker container that uses go-bindata
to compile a config. I run the docker container with
docker run -id \
-v conf:/conf \
-e CONF="/conf" \
my-container
Then in the docker container, I install go-bindata, and run
RUN go-bindata -prefix $CONF -o $GOPATH/src/github.com/my/repo/dir/conf_generated.go $CW_CONF/config
And the output is
bindata: Failed to stat input path '/conf/config': lstat /conf/config: no such file or directory
This is the line that is causing the error. It is odd because when I enter the container and run the same command, it works. stat /conf/config
also works (it knows the file is there). What is going on here? Why doesn't the install line work when the container is building?
我有一个使用 然后在docker容器中,安装go-bindata,然后运行 p>
输出为 p>
这是 导致错误。 这很奇怪,因为当我进入容器并运行相同的命令时,它可以工作。 go-bindata code>编译配置的docker容器。 我使用 p>
docker运行docker容器-id \
-v conf:/ conf \
-e CONF =“ / conf” \
my-container
code> pre>
RUN go-bindata- 前缀$ CONF -o $ GOPATH / src / github.com / my / repo / dir / conf_genic.go $ CW_CONF / config
code> pre>
bindata:无法统计输入路径'/ conf / config':lstat / conf / config:没有这样的文件或目录
code> pre>
\ n
stat / conf / config code>也可以工作(它知道文件在那里)。 这里发生了什么? 为什么在构建容器时安装行不起作用? p>
div>
It looks like you have the bindata call declared in your Dockerfile. With the RUN prefix it's executed during build of the container when there is no volume yet mounted. If you use the CMD prefix it will run during execution of the container, then the volume is mounted and it should work.