reactjs - 带有代理的客户端应用程序的 Docker 或 Docker-compose
问题描述
我有一个用于代理的react
应用程序。go
我在是否使用docker-compose
或使用单个Dockerfile
. 想得到一个意见,为什么你认为一个或另一个更好?仅供参考,我们使用来自客户端应用程序的相对 API 路径。
解决方案
如果你将它作为多个容器运行——React 应用程序运行的是非生产开发服务器,而 Go 应用程序只有一个 HTTP 代理——那么你可能会发现使用 Compose 运行起来要容易得多。
您可能不想在生产中运行开发服务器。通常使用 Webpack 之类的工具将 React 应用程序编译为静态文件。一旦你这样做了,你就可以将这些静态文件包含在 Go 应用程序容器中(或者甚至将它们嵌入到 Go 二进制文件中)。Docker多阶段构建可以很好地处理这种情况,使用第一阶段FROM node
to RUN npm run build
,第二阶段FROM golang
构建二进制文件,最后阶段FROM ubuntu
组合运行时的各个部分。那时您将只有一个容器,您可以选择仅docker run
使用容器还是将其包装在docker-compose.yml
文件中更方便。
无论如何,您可能希望避免在部署时配置不必要的东西。command:
例如,如果可以,请避免指定 Compose ;不要volumes:
用于注入或覆盖应用程序的重要部分。如果你有一个涉及的docker run
命令,那么在 Compose 中重写它会更容易重新运行它,但最好还是只需要更少的参数来启动容器。
推荐阅读
- cloud-foundry - cloudfoundry buildpack 和编译器有什么区别?
- sql - 使用 SQL Server 插入具有自动增量的嵌套实体
- javascript - 如何在数组 javascript 中添加带有 id 的新密钥?
- ubuntu - 我在尝试从 WSL 打开 Atom 时出错,直到昨天它运行良好
- ios - 为什么我的 iOS 应用程序中的一个函数会被调用两次?
- javascript - 将 mouseenter 事件更改为定时事件
- augmented-reality - 为什么 ARCore Supported device Limited?
- javascript - 如何在自动上设置文本区域高度
- python - sys.stdout.write 和 sys.stdout.flush 留下字符
- hibernate - 在 java 中,我在获取 List 时得到 ClassCastExceptin
因为返回非托管实体