Это мой Dockerfile
FROM golang:alpine AS build
RUN apk --no-cache add gcc g++ make git
WORKDIR /go/src/app
COPY . .
RUN go get ./...
RUN GOOS=linux go build -ldflags="-s -w" -o ./bin/web-app ./main.go
FROM alpine:3.9
RUN apk --no-cache add ca-certificates
WORKDIR /usr/bin
COPY --from=build /go/src/app/bin /go/bin
EXPOSE 80
ENTRYPOINT /go/bin/web-app --port 80
И это простой main.go:
package main
import (
"fmt"
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./public")))
log.Fatal(http.ListenAndServe(":80", nil))
}
Публичный каталог находится в одной папке с файлом main.go. В публичном каталоге есть файл index.html. Когда я запускаю go run main.go
, мой сайт обслуживается правильно. Но с Docker я получаю страницу 404. Я подозреваю, что это связано с размещением файлов внутри контейнера докера. Любая помощь приветствуется.