提供的标志,但没有定义

我有以下Dockerfile

 FROM golang:1.9.2 ADD . /go/src/github.com/golang/example/outyet ADD . /go/src/github.com/derekparker/delve/cmd/dlv RUN go install github.com/golang/example/outyet RUN go install github.com/derekparker/delve/cmd/dlv RUN ["chmod", "+x", "/go/src/github.com/golang/example/outyet/bootstrap.sh"] CMD ["/go/src/github.com/golang/example/outyet/bootstrap.sh"] EXPOSE 8091 EXPOSE 5432 

并遵循bootstrap.sh

 #!/bin/sh go build -gcflags='-N -l' github.com/golang/example/outyet && dlv --listen=:5432 --headless=true --api-version=2 exec outyet; 

用下面的行运行容器和图像后:

 sudo docker build -t outyet . sudo docker run -p 6060:8091 -p 5432:5432 --name test --rm outyet 

我得到以下输出:

 flag provided but not defined: -listen Usage of dlv: -http string Listen address (default ":8091") -poll duration Poll period (default 1s) -version string Go version (default "1.4") 

当我在我的ubuntu hostmachine本地运行bootstrap.sh时,一切正常。 哪里不对?

我能修复它,我的Dockerfile现在看起来像这样:

 FROM golang:1.9.2 ADD . /go/src/github.com/golang/example/outyet RUN go install github.com/golang/example/outyet RUN ["chmod", "+x", "/go/src/github.com/golang/example/outyet/bootstrap.sh"] RUN ["chmod", "+x", "/go/bin/outyet"] CMD ["/go/src/github.com/golang/example/outyet/bootstrap.sh"] EXPOSE 8091 EXPOSE 5432 

bootstrap.sh:

 #!/bin/sh go get github.com/derekparker/delve/cmd/dlv; go build -gcflags='-N -l' github.com/golang/example/outyet && dlv --listen=:5432 --headless=true --api-version=2 exec outyet 

并运行如下:

 sudo docker build -t outyet . sudo docker run --security-opt=seccomp:unconfined --net=host --name test --rm outyet