无法下载docker golang映像:没有指定命令

docker工在这里的新手。

我想使用go语言来构build一个项目,我docker-compose.yml文件包含以下内容:

 go: image: golang:1.7-alpine volumes: - ./:/server/http ports: - "80:8080" links: - postgres - mongodb - redis environment: DEBUG: 'true' PORT: '8080' 

当我在terminal中运行docker-compose up -d时,它返回以下错误:

 `ERROR: for go Cannot create container for service go: No command specified` 

我应该如何解决它?

Golang:1.7高山只是构buildGo容器的基础,没有CMD或入口点,所以立即结束。

使用一个真正有用的图像,例如每45秒打印一次Hello World

我用golang:1.7代替了golang:1.7-alpine解决了这个问题。

你应该用一个参数运行你的容器,这个参数将被传递给默认的ENTRYPOINT ,作为一个命令来执行

但是现在最好的做法是使用多阶段,以便只用您的应用程序生成较小的图像。

或者你可以将你的ENTRYPOINT定义为你的构buildGo应用程序。

请参阅“ 使用Go使用Docker多阶段构build ”,使用新的AS build-stage关键字。

您的Dockerfile将是:

 # build stage ARG GO_VERSION=1.8.1 FROM golang:${GO_VERSION}-alpine AS build-stage MAINTAINER fbgrecojr@me.com WORKDIR /go/src/github.com/frankgreco/gobuild/ COPY ./ /go/src/github.com/frankgreco/gobuild/ RUN apk add --update --no-cache \ wget \ curl \ git \ && wget "https://github.com/Masterminds/glide/releases/download/v0.12.3/glide-v0.12.3-`go env GOHOSTOS`-`go env GOHOSTARCH`.tar.gz" -O /tmp/glide.tar.gz \ && mkdir /tmp/glide \ && tar --directory=/tmp/glide -xvf /tmp/glide.tar.gz \ && rm -rf /tmp/glide.tar.gz \ && export PATH=$PATH:/tmp/glide/`go env GOHOSTOS`-`go env GOHOSTARCH` \ && glide update -v \ && glide install \ && CGO_ENABLED=0 GOOS=`go env GOHOSTOS` GOARCH=`go env GOHOSTARCH` go build -o foo \ && go test $(go list ./... | grep -v /vendor/) \ && apk del wget curl git # production stage FROM alpine:3.5 MAINTAINER fbgrecojr@me.com COPY --from=build-stage /go/src/github.com/frankgreco/go-docker-build/foo . ENTRYPOINT ["/foo"]