【发布时间】:2020-01-14 22:00:48
【问题描述】:
我是 docker 新手。
我正在尝试使用回显服务器在 go 中实现 RESTfull api。当我运行 main.go 时,我的代码运行良好,但我无法使用 docker 运行它。
这是我的回显服务器:
r := router.Router()
r.Logger.Fatal(r.Start("localhost:8080"))
这是我的 Dockerfile:
FROM golang:latest AS build
ENV GO111MODULE=on \
CGO_ENABLED=1
#Maintainer info
LABEL maintainer="Saman Hoseini"
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN go build -o main .
#this step is for CGO libraries
RUN ldd main | tr -s '[:blank:]' '\n' | grep '^/' | \
xargs -I % sh -c 'mkdir -p $(dirname ./%); cp % ./%;'
RUN mkdir -p lib64 && cp /lib64/ld-linux-x86-64.so.2 lib64/
#Second stage of build
FROM alpine:latest
RUN apk update && apk --no-cache add ca-certificates \
sqlite
COPY --from=build /app ./
EXPOSE 8080
ENTRYPOINT ["./main"]
构建后,当我运行容器时,我面临 curl 失败:
$ docker run -d -p 8080:8080 my-docker
curl: (56) Recv failure: Connection reset by peer
我该如何解决这个问题?
【问题讨论】:
-
不要绑定到 localhost:8080,使用 :8080
标签: docker go dockerfile