无法下载docker golang图像:未指定命令

时间:2017-04-22 04:25:30

标签: docker go docker-compose

新手在这里的码头工人。

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

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

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

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

我该如何解决?

3 个答案:

答案 0 :(得分:1)

Golang:1.7-alpine只是构建Go容器的基础,并且没有CMD或ENTRYPOINT,因此立即结束。

使用真正做事的图像,比如每45秒打印一次你好世界

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您应该使用将传递给默认ENTRYPOINT的参数运行您的容器,以作为命令执行

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

或者您可以定义ENTRYPOINT作为您的构建Go应用程序。

使用新的AS build-stage关键字查看' 3.9.0'

您的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"]