使用Docker桌面开发环境功能开发SpringBoot - itnext


本文是Docker、VS Code、Docker Compose 和 Remote-Containers 插件的良好组合的教程。
最近 docker 推出了一个名为 Dev Environments 的新功能,这是一个预览功能,但对我来说非常有趣。这个新功能是 Docker、docker-compose 和 VS Code(带有远程容器插件)的组合。
通过使用此功能,您可以轻松地从docker 卷(或您的本地目录)内的项目 git 存储库构建快速开发环境,然后连接到使用 VS Code(远程容器插件)附加到该卷的创建的 docker 容器并开始编码和运行该项目。您甚至可以将现有的 Docker 开发环境映像上传到 Docker Hub 以与他人共享。
如果您只是想快速浏览一个项目或帮助在分支上工作的同事,则无需通过安装 SDK、编译器和其他开发工具来弄乱您的系统。
Docker DesktopDev Environments支持两种类型的项目:

  • 单容器开发环境
  • 基于组合的开发环境

在本文中,我们将为Spring Boot 团队官方 REST API 示例项目创建一个docker Dev environments演示。
 
准备您的机器以创建您的第一个 Docker 开发环境
  1. 首先,你需要安装Docker DesktopVS Code,然后你需要在 VS Code 中安装Remote-Containers 插件
  2. 接下来,运行 Docker 桌面并通过单击Whale iconmacOS 菜单栏(或 Windows 系统托盘)中的进入仪表板,然后单击Dashboard子菜单。
  3. 最后,您应该单击Dev Environemnts位于左窗格中的 并查看您的Docker Dev Environments.

 
如何创建 Docker 开发环境?
在 Docker Desktop Dashboard 的 Dev Environment 窗格中,按 Create New Environment 按钮,您将有 3 个选择来创建新的 Dev Environment:
  • 远程 Git 存储库:从 Docker 卷内的远程 git 存储库(可能是该存储库的一个分支)克隆项目代码,使用创建的卷创建一个 docker 容器并打开 VS 代码,然后使用远程容器插件
  • 本地文件夹:与上一个类似,但您的源代码位于已创建的 docker 容器内的本地目录中。您的源代码将在 docker 容器和您的本地目录之间同步,因此与之前的方法相比,它可能会有点慢。
  • 现有开发环境:您可以通过将现有开发环境发布为 docker 映像来重用它们,然后通过这种方法重用它们。

 
为 Spring Boot 项目创建 Docker 开发环境
按 Create New Environment 按钮,在第一个选项卡(Remote Git Repository)中,输入Spring Boot 团队提供的官方 REST API 示例项目的 URL :https://github.com/spring-guides/gs-rest-service
按下Create按钮后,开始创建您的第一个开发环境的过程。Docker 开发环境执行以下步骤来创建您的第一个开发环境:
  • 根据您项目的编程语言和技术拉取一个 docker 镜像,在这种情况下,docker pulldocker/dev-environments-java:stable-1并基于它创建一个容器和所需的卷。
  • 将给定 git 存储库中的源代码克隆到这些创建的卷之一中。
  • 最终 docker 桌面将为您打开一个 VS 代码窗口,该窗口使用Remote-Containers 插件连接到创建的 docker 容器。

 
在开发环境中开发和运行项目
如果您只想运行此示例 REST API,则无需在容器中的 VS Code 或 JDK 中安装任何插件。Dev Environment 创建的 Docker 容器有 JDK 和SDKMAN!,SDKMAN的存在!如果您想安装其他 SDK 和工具(例如 Maven、Scala 或 Kotlin),则非常有用。
因此,您只需要进入complete项目中的目录并从 VS Code 终端执行此命令:
cd complete
./mvnw spring-boot:run

对于 VS Code 中的 Java 和 Spring Boot 开发,您有两个选择:

于 VS Code 和Remote-Containers 插件的有趣之处在于,当你连接到这个容器时,安装的插件才可用。
现在您可以rest-service-complete使用 Spring Boot Dashboard运行(或调试)项目,只需单击运行(或调试)按钮(也许您需要转到终端并按下Ctrl + C以停止先前运行的实例)。
 
总结 
像所有工具和技术一样,Docker Desktop 中引入的这个新功能也有一些优点和缺点,但总的来说,我喜欢这个功能,作为下面列表中的最终结论,我试图提到它的优点和缺点Docker 开发环境功能。
优势:
  • 将开发环境与主机操作系统完全隔离
  • 良好的性能
  • 在 VS Code 中为每个项目安装所需的插件
  • 可重现的开发环境以实现更好的团队合作
  • 减少向团队添加新开发人员的入职时间

缺点:
  • 尚不支持 Intellij Idea
  • 如果在开发过程中,Dev 环境容器崩溃,那么您的代码将丢失!
  • 免费计划中不提供共享开发环境