如何格式化 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" ]
我的 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" ]