提供的标志,但没有定义
我有以下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