如何格式化 DockerFile 以查看应用程序所在的子目录

How to format a DockerFile to look at a sub-directory where the app is

我的 DockerFile 正在错误目录中查找 .go 文件,它需要查找名为 app

的子目录

这是我设置的文件夹,父文件夹是 my-app

my-app/
├─ app/
│  ├─ api
│  ├─ go.mod
│  ├─ go.sum
│  ├─ main.go
DockerFile

Docker 文件:

# syntax=docker/dockerfile:1

FROM golang:1.16-alpine

WORKDIR /app

COPY go.mod ./
COPY go.sum ./
RUN go mod download

COPY *.go ./

RUN go build -o /docker-gs-ping

EXPOSE 8080

CMD [ "/docker-gs-ping" ]

目前 DockerFile 正在 DockerFile 所在的目录中查找 go 文件,而不是在 app 子目录中。我在哪里可以解决这个问题?

据我了解应该是这样的,基本上将所有内容复制到应用程序,运行 下载和构建命令。

# syntax=docker/dockerfile:1

FROM golang:1.16-alpine
WORKDIR /app
COPY app/ .
RUN go mod download    
RUN go build -o /docker-gs-ping
EXPOSE 8080
CMD [ "/docker-gs-ping" ]

这是构建轻量级 docker 图像的可能解决方案

# syntax=docker/dockerfile:1
FROM golang:1.16-alpine as builder
ENV GO111MODULE=on \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64
WORKDIR /app
COPY app/* ./
RUN go mod download
RUN go build -o /docker-gs-pings *.go
EXPOSE 8080

FROM scratch
EXPOSE 8080
COPY --from=builder /docker-gs-pings /
CMD [ "/docker-gs-pings" ]