2017-04-22 113 views
1

docker新手在這裏。無法下載docker golang鏡像:沒有指定命令

我想建立使用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` 

應該如何我修復它?

+0

你想在這個容器中運行什麼? – Matt

+0

你試過指定一個命令嗎? – Flimzy

回答

1

Golang:1.7高山只是構建Go容器的基礎,並且沒有CMD或入口點,因此會立即結束。

使用圖像做的真的東西,就像打印的Hello World每45秒

0

你應該與將被傳遞到默認ENTRYPOINT的參數運行的容器,作爲一個命令來執行

但現在最好的做法是使用多階段,以便只用您的應用程序生成較小的圖像。

或者您可以將您的ENTRYPOINT定義爲您的構建Go應用程序。

請參閱'Using Docker Multi-Stage Builds with Go',使用新的AS build-stage關鍵字。

你Dockerfile是:

# build stage 
ARG GO_VERSION=1.8.1 
FROM golang:${GO_VERSION}-alpine AS build-stage 
MAINTAINER [email protected] 
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 [email protected] 
COPY --from=build-stage /go/src/github.com/frankgreco/go-docker-build/foo . 
ENTRYPOINT ["/foo"] 
1

我用golang:1.7代替golang:1.7-alpine解決它。

相關問題