在单个 Docker 容器中运行前端和后端

我理解,最佳做法是始终将前端代码和后端代码分开。我有一个Vue js应用程序和一个Golang服务器来做一些业务逻辑,我需要它们成为一个可以从单个容器运行的单元。任何提示将不胜感激?


叮当猫咪
浏览 173回答 1
1回答

红颜莎娜

使用多阶段 Dockerfile 来确保只复制所需的资产。使用图像还可以显著减少图像占用空间scratch例如,下面的多阶段构建将VueJS构建到一个目录和单个Go二进制文件中,并将其复制到最小映像中:distscratch# go buildFROM golang:1.16.3 AS go-buildWORKDIR /COPY    backend backendRUN     CGO_ENABLED=0 go build# node buildFROM node:15.13.0 AS node-buildWORKDIR /COPY frontend frontendRUN \    npm i && \    npm run build## final stage:#FROM scratchCOPY --from=go-build \    /backend/rest-server \    /app/rest-serverCOPY --from=node-build \    /frontend/dist \    /app/dist/CMD ["/app/rest-server"]在上面的示例中,您的 REST 服务不仅会为您的后端 API 提供服务,还会为目录中构建的静态 VueJS 前端资产提供服务:/app/disth.Handle(    "/",    http.StripPrefix(        "/",        http.FileServer(            http.Dir(conf.StaticDir), // e.g. VueJS's "/app/dist"        ),    ),)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go