下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗数据安全标准对接:技术伦理考量
- 医疗数据安全成熟度评估:区块链驱动的信任机制
- 医疗数据安全应急:区块链零信任预案
- 医疗数据安全合规性风险应对策略
- 医疗数据安全区块链技术的应用价值与效益评估
- 医疗数据安全区块链保护的标准体系构建
- 文库发布:背影课件
- 2026届内蒙古省北京八中乌兰察布分校高一生物第一学期期末教学质量检测模拟试题含解析
- 江苏省南京市浦口区江浦高级中学2026届高二上数学期末达标检测模拟试题含解析
- 5G-A工业智能化应用项目教程 课件 (3)5G-A基站维护
- 江苏南通市如皋市2026届高三上学期教学质量调研(二)语文试题+答案
- GB/T 46785-2025风能发电系统沙戈荒型风力发电机组
- 2025年江苏盐城港控股集团有限公司招聘21人备考题库及参考答案详解1套
- 云南民族大学附属高级中学2026届高三联考卷(四)化学+答案
- 楷书简介课件复制
- 2025年山东省滨州市检察院书记员考试试题及答案
- 《做酸奶》课件教学课件
- 专项资金审计课件
- 2025西部机场集团航空物流有限公司招聘考试笔试备考试题及答案解析
- 《教育心理学》期末重点巩固专练题库(附答案)
- 2025年秋人教版(新教材)初中数学七年级上册期末综合测试卷及答案
评论
0/150
提交评论