Search code examples
dockergomicroservices

Running microservice go (not found)


The error I'm getting for my Go Module project

/bin/sh: microservice: not found

Dockerfile

FROM golang:1.7.4-alpine
MAINTAINER John Doe

ENV SOURCES /go/src/github.com/john/app/

COPY . ${SOURCES}

RUN cd ${SOURCES} && cgo_enabled=0 go install

ENV PORT 8080
EXPOSE 8080

ENTRYPOINT microservice

microservice.go

package main

import (
    "fmt"
    "net/http"
    "os"
)

func main() {
    http.HandleFunc("/", index)
    http.ListenAndServe(port(), nil)
}

func port() string {
    port := os.Getenv("PORT")
    fmt.Println(port)
    if len(port) == 0 {
        port = "8080"
    }
    return ":" + port
}

func index(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
    fmt.Fprintf(w, "Hello World.")
}

It's a Go module project. I've created an image using following command.

docker build -t app:1.0.3 .

and running it via

docker run -it -p 8080:8080 app:1.0.3

Solution

  • Created executable file is at /go/bin/app and current working directory is /go.

    So, change the last line of your Dockerfile to this

    ENTRYPOINT ./bin/app