这是我的Dockerfile:
FROM golang
RUN apt-get update
RUN go get -u github.com/golang/protobuf/{proto,protoc-gen-go}这将生成以下错误:
package github.com/golang/protobuf/{proto,protoc-gen-go}: invalid github.com/ import path "github.com/golang/protobuf/{proto,protoc-gen-go}"但是,如果我取出这个RUN指令,并在docker容器中加载/bin/bash,我就可以运行go get命令了。
到底怎么回事?
发布于 2016-10-12 17:45:29
如果我使用另一个shell,比如bash,并为go命令放置双引号,它就能工作。
RUN bash -c "go get github.com/golang/protobuf/{proto,protoc-gen-go}"
顺便说一句,您只能在一次运行中完成所有操作,请参阅Dockerfiles最佳实践
发布于 2016-10-12 17:43:50
之所以会发生这种情况,是因为默认的shell不是/bin/bash,而是sh。您有两个可能的解决方案,要么可以在RUN命令中显式定义shell,如下所示:
RUN ["/bin/bash", "-c", "go get -u github.com/golang/protobuf/{proto,protoc-gen-go}"]或者,您可以更改RUN默认使用的shell,如下所示:
SHELL ["/bin/bash", "-c"]
RUN go get -u github.com/golang/protobuf/{proto,protoc-gen-go}https://stackoverflow.com/questions/40003577
复制相似问题