为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
叮当猫咪 2022-08-24 11:32:16
我理解,最佳做法是始终将前端代码和后端代码分开。我有一个Vue js应用程序和一个Golang服务器来做一些业务逻辑,我需要它们成为一个可以从单个容器运行的单元。任何提示将不胜感激?
查看完整描述

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"

        ),

    ),

)


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号