已提供标记但未定义

时间:2017-12-13 16:04:59

标签: docker go dockerfile delve

我关注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时,一切正常。有什么问题?

1 个答案:

答案 0 :(得分:1)

我能够修复它,我的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