使用Docker进行Spring Boot开发指南_第1页
使用Docker进行Spring Boot开发指南_第2页
使用Docker进行Spring Boot开发指南_第3页
使用Docker进行Spring Boot开发指南_第4页
使用Docker进行Spring Boot开发指南_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 PAGE 1使用 Docker 进行 Spring Boot 开发指南 PAGE 6使用 Docker 进行 Spring Boot 开发我们来看看如何将容器引入 Spring Boot 项目。这里,我们使用 Docker 来包含 Java REST 后端,远离操作系统的后顾之忧。 HYPERLINK /dockersamples/atsea-sample-shop-app AtSea Shop 是一个能部署在不同操作系统,可以在你的企业开发和操作环境定制的示例店铺应用程序。在 HYPERLINK /2017/05/developing-spring-boot-app-docker-atse

2、a-demo-app/ h 之前的文章,我讨论了应用程序的结构。在本文种,我将介绍如何设置开发环境以在容器中调试运行的 Java REST 后端。构建 REST 应用程序我使用 Spring Boot 框架快速开发在 AtSea 中管理产品、用户和订单表的 REST 后端。该应用程序Spring Boot 的内置应用程序服务器,支持 RESR 接口以及定义多个数据源的能力。因为它是 Java 写的,所以它不用管基础操作系统,可以运行在 Windows 或 Linux 容器中。这允许开发者构建异构体系结构。项目设置AtSea 项目使用多阶段构建,一种新的 Docker 功能,允许我使用多个镜像(

3、image)构建单个 Docker 镜像,其中包括应用程序需要的所有组建。多阶段构建使用 Maven 容器来构建应用程序的 JAR 文件。然后将该 JAR 文件复制到 Java Development Kit 镜像。这使得镜像更加紧凑和高效,因为 Maven 没有被包含在应用程序中。类似的,React 店铺客户端在一个 Node 镜像中构建,编译后的应用程序也被添加到最终的应用程序镜像中。我使用 Eclipse 编写 AtSea 应用程序。如果你需要 IntelliJ 或 Netbeans 的有关远程调试的配置信息, 你可以查看该 HYPERLINK /docker/labs/tree/mas

4、ter/developer-tools/java-debugging Dicker Labs Repository。你也可以查看 HYPERLINK /dockersamples/atsea-sample-shop-app AtSea 应用程序的 Github repository。我通过克隆 repository 并通过将根目录设置为项目并单击完成将项目导入 Eclipse 来构建应用程序File Import Maven Existing Maven Projects因为我使用了 Spring Boot,所以我利用 spring-devtools 在应用程序中进行远程调试。我不得不将Spr

5、ing Boot-devtools 依赖添加到 pom.xml 文件中。org.springframework.bootspring-boot-devtools请注意,当应用程序完全打包为 JAR 时,该开发者工具将被自动禁用。为了确保在开发过程中可以使用devtools,我在 spring-boot-maven 构建插件中将 配置设置为 false:org.springframework.bootspring-boot-maven-pluginfalse该示例使用 Decker Compose 文件,该文件创建了开发和调试所需容器的简单构建。version: 3.1 services:dat

6、abase:build:context: ./database image: atsea_db environment:POSTGRES_USER: gordonuser POSTGRES_DB: atseaports:- 5432:5432networks:back-tier secrets:postgres_password appserver:build:context: .dockerfile: app/Dockerfile-dev image: atsea_appports:- 8080:8080- 5005:5005networks:front-tierback-tier secr

7、ets:postgres_password secrets:postgres_password:file: ./devsecrets/postgres_password networks:front-tier: back-tier: payment:driver: overlay该 Compose 文件使用 secrets 来提供密码和其他如证书的敏感信息,而不用依赖于环境变量。虽然该示例使用 PostgreSQL,但应用程序可以使用 secrets 来连接到由 Spring Boot 数据源定义的任何数据库。查看 JpaConfiguration.java:public DataSource

8、Properties dataSourceProperties() DataSourceProperties dataSourceProperties = new DataSourceProperties();/ Set password to connect to database using Docker secrets.try(BufferedReader br = new BufferedReader(new FileReader(/run/secrets/postgres_password) StringBuilder sb = new StringBuilder();String

9、line = br.readLine(); while (line != null) sb.append(line); sb.append(System.lineSeparator(); line = br.readLine();dataSourceProperties.setDataPassword(sb.toString(); catch (IOException e) System.err.println(Could not successfully load DB password file);return dataSourceProperties;另外需要注意的是该 appserve

10、r 为远程调试打开了 5005 端口,并且该构建调用 Dockerfile-dev 文件来构建开启了远程调试的容器。下面是在 Entrypoint 中的设置,制定了调试器的传输机制和地址:ENTRYPOINT java,-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005,-jar, /app/AtSea-0.0.1-SNAPSHOT.jar远程调试要在应用程序上开始远程调试,请使用 docker-compose-dev.yml 文件运行 compose。docker-compose -f docker-compo

11、se-dev.yml up -buildDocker 将构建镜像并启动 AtSea Shop 数据库和 appserver 容器。但是,在 Eclipse 的远程调试器连接到应用程序之前,应用程序将无法完全加载。要启用远程调试,单击 Run Debug Configurations .选择 Remote Java Application,然后按新建按钮来创建配置。在调试配置面板中,设置配置名,选择AtSea 项目并设置 port 和 port 的连接属性为 5005。单击 Apply Debug。appserver 将启动:: Startedappserver_1|2017-05-09 03:

12、22:23.118 INFO 1 main com.docker.atsea.AtSeaAppAtSeaApp in 38.923 seconds (JVM running for 109.984)appserver_1|2017-05-09 03:22:23.095 INFO 1 main s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcatstarted on port(s): 8080 (http)要测试远程调试,在 ProductController.java 返回产品列表的地方设置断点。你可以使用 curl 或你更喜欢的工具来发出 HTTP 请求以进行测试:curl -H Content-T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论