1 回答
TA贡献1842条经验 获得超13个赞
使用多阶段 Dockerfile 来确保只复制所需的资产。使用图像还可以显著减少图像占用空间scratch
例如,下面的多阶段构建将VueJS构建到一个目录和单个Go二进制文件中,并将其复制到最小映像中:distscratch
# go build
FROM golang:1.16.3 AS go-build
WORKDIR /
COPY backend backend
RUN CGO_ENABLED=0 go build
# node build
FROM node:15.13.0 AS node-build
WORKDIR /
COPY frontend frontend
RUN \
npm i && \
npm run build
#
# final stage:
#
FROM scratch
COPY --from=go-build \
/backend/rest-server \
/app/rest-server
COPY --from=node-build \
/frontend/dist \
/app/dist/
CMD ["/app/rest-server"]
在上面的示例中,您的 REST 服务不仅会为您的后端 API 提供服务,还会为目录中构建的静态 VueJS 前端资产提供服务:/app/dist
h.Handle(
"/",
http.StripPrefix(
"/",
http.FileServer(
http.Dir(conf.StaticDir), // e.g. VueJS's "/app/dist"
),
),
)
- 1 回答
- 0 关注
- 161 浏览
添加回答
举报
