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 關注
- 129 瀏覽
添加回答
舉報