您如何使用容器(Docker 个容器)的概念交付您的应用程序

How do you deliver your application using the concept of containers (Docker containers)

这是一个关于使用容器交付和开发微服务的问题。

您如何使用容器的概念交付您的应用程序?我真的需要在每次构建时为我的应用程序生成一个 Docker 容器吗?甚至本地构建?

我是否需要将 Spring 启动应用程序、Node.js 应用程序或其他类型的应用程序复制到我的 Docker 容器中?或者用我的应用程序安装一个卷是最好的方法吗?

是否也需要在本地使用容器进行开发?或者在 Spring Boot 中,例如,最好的方法是在像 Eclipse 或 Idea 这样的 IDE 中 运行 Application.class 在本地环境中测试我的代码?

首先,如果您想使用 docker 容器 部署 ,您的构建系统应该生成 docker 个图像,并且您的暂存环境应该 运行那些图片。

本地发展是另一回事。有几种方法可以解决这个问题,每种方法都有自己的 pros/cons:

  1. 始终构建 docker 图像,即使是本地构建。好处是您的本地测试是 "authentic",因为您正在针对与最终部署在生产中的容器相同的容器进行测试。明显的缺点是 docker 构建速度可能很慢(即使有缓存)。

  2. 使用与生产映像相同的 运行time 环境构建一个 docker 映像,但将您的实时代码装载到其中。有些人喜欢这种方法,因为它在花费大量时间构建图像与拥有真实的 运行 时间环境之间实现了更好的权衡。它还有一个好处,就是您可以与同事共享您的环境,这样每个人都可以在相同的 运行 时间环境下进行测试。

  3. 使用你当前的本地环境,忘记本地开发中的docker。这是最简单的方法,如果您不需要 运行 在本地进行大量端到端测试,我认为这也是一种很好的方法。如果您需要在本地做的只是编写代码和 运行 一堆单元测试,并且您已经有一个单独的暂存环境来 运行 使用真实容器进行端到端测试,使用 docker在本地并没有增加多少价值。

简而言之,运行在本地 docker 是进行 "authentic" 端到端测试的一种廉价方法,但它增加了复杂性并且坦率地说不能(也不应该)更换一个好的舞台设置。