说明:本例子基于上一篇构建restful服务的文章:http://danlley.iteye.com/blog/2369553
话开两端,我们先说说如何构建基于springboot的普通基于http请求的rest服务,然后在分说如何将其改造为https的rest服务
一、构建基于springboot的普通基于http请求的rest服务
1、获取JDK镜像
root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# docker pull daocloud.io/ld00000/jdk-8:latest latest: Pulling from ld00000/jdk-8 16da43b30d89: Pull complete 1840843dafed: Pull complete 91246eb75b7d: Pull complete 7faa681b41d7: Pull complete 97b84c64d426: Pull complete 6b1254b9c53d: Pull complete 1e8c843c6844: Pull complete 0ae07ce5d963: Pull complete 4b5ddb6dd051: Pull complete 53e7f455a630: Pull complete ee6c0b346008: Pull complete bd4fb9674907: Pull complete 86afde7cb9ea: Pull complete Digest: sha256:393b7c84efc10a6891902f91ca0c39b9619b27903f3c35eedd00960516dfda44 Status: Downloaded newer image for daocloud.io/ld00000/jdk-8:latest
2、制作dockerfile
FROM daocloud.io/ld00000/jdk-8:latest ADD rest-common-persist-1.0.0.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
3、制作springboot镜像
root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# docker build . Sending build context to Docker daemon 13.5 MB Step 1 : FROM docker pull daocloud.io/ld00000/jdk-8:latest Error parsing reference: "docker pull daocloud.io/ld00000/jdk-8:latest" is not a valid repository/tag root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# vi Dockerfile root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# vi Dockerfile root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# vi Dockerfile root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# docker build . Sending build context to Docker daemon 13.5 MB Step 1 : FROM daocloud.io/ld00000/jdk-8:latest ---> 6244248eff4b Step 2 : ADD rest-common-persist-1.0.0.jar app.jar ---> b5f856f83f53 Removing intermediate container bc112d6003fa Step 3 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar ---> Running in 270f272cebe9 ---> 0844d9dce81c Removing intermediate container 270f272cebe9 Successfully built 0844d9dce81c
4、为新docker镜像重新命名:docker tag 0844d9dce81c springbootv1
5、运行springboot应用: docker run -p 8080:8080 -t springbootv1 看到下面的结果,则说明启动成功
root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# docker run -p 8080:8080 -t springbootv1 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.3.5.RELEASE) ……………………………………………… 2017-04-18 15:56:32.541 INFO 1 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2017-04-18 15:56:32.551 INFO 1 --- [ main] c.m.restful.service.impl.Application : Started Application in 7.379 seconds (JVM running for 8.294)
6、通过postman请求访问地址: http://192.168.56.102:8080/greet
推送数据: { "keyModel": { "id": "test", "content": "danlley----" }, "key":"my", "value":"alipay" } 执行结果: { "keyModel": { "id": "test", "content": "danlley----" }, "key": "my", "value": "alipay" } 服务端日志: 2017-04-18 15:57:50.947 WARN 1 --- [nio-8080-exec-1] c.m.r.service.impl.RestfulController : -------------------->model=com.myteay.restful.service.impl.ApplicationModel@6f562f4 2017-04-18 15:58:06.054 WARN 1 --- [nio-8080-exec-2] c.m.r.service.impl.RestfulController : -------------------->model=com.myteay.restful.service.impl.ApplicationModel@6490f020
至此,我们第一个话题完结。
二、将其改造为https的rest服务
1、停止当前docker
root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2d6abf784855 springbootv1 "java -Djava.security" 5 minutes ago Up 5 minutes 0.0.0.0:8080->8080/tcp zen_pasteur root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# docker stop 2d6abf784855
2、准备生产证书:keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
3、开始构建https的restful服务,增加配置文件:src/main/resources/application.properties 并重新编译打包
#server.port=8081 #server.session-timeout=1000000 #server.context-path=/index # #server.tomcat.uri-encoding=UTF-8 #server.tomcat.compression=on #-storetype \u9009\u9879\u6307\u5B9A\u5BC6\u94A5\u4ED3\u5E93\u7C7B\u578B #keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 server.ssl.key-store=keystore.p12 server.ssl.key-store-password=111111 server.ssl.keyStoreType=PKCS12 server.ssl.keyAlias:tomcat
4、将生成的证书放入打包的路径当前路径Dockerfile内容如下:
FROM daocloud.io/ld00000/jdk-8:latest ADD keystore.p12 /keystore.p12 ADD rest-common-persist-1.0.0.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
5、利用步骤二中的配置重新做镜像,并为镜像重命名
root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# docker build . Sending build context to Docker daemon 13.5 MB Step 1 : FROM daocloud.io/ld00000/jdk-8:latest ---> 6244248eff4b Step 2 : ADD rest-common-persist-1.0.0.jar app.jar ---> 988090c11d43 Removing intermediate container 52b8d80471ee Step 3 : ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -jar /app.jar ---> Running in 482560955d3b ---> ac71565ee29d Removing intermediate container 482560955d3b Successfully built ac71565ee29d root@danlley-VirtualBox:/home/danlley/dockerfiles/springbootdocker# docker tag ac71565ee29d springbootv3
6、运行springboot应用: docker run -p 8080:8080 -t springbootv3
7、通过postman请求访问地址: https://192.168.56.102:8080/greet
推送数据: { "keyModel": { "id": "test", "content": "danlley----" }, "key":"my", "value":"alipay" } 执行结果: { "keyModel": { "id": "test", "content": "danlley----" }, "key": "my", "value": "alipay" } 服务端日志: 2017-04-18 16:17:06.989 WARN 1 --- [nio-8080-exec-4] c.m.r.service.impl.RestfulController : -------------------->model=com.myteay.restful.service.impl.ApplicationModel@a897c24
是不是很简单呢 O(∩_∩)O哈哈~
相关推荐
gradle-restful-quickstart Gradle Spring-Boot Restful Service Docker快速入门初始git项目git init git remote add origin 创建gradle环境( ) gradle init --type Java应用程序查看项目文件添加忽略文件+ ....
Image和container的磁盘存储结构 DockerFile构建Image Docker的网络 Docker RESTful API Fig:Docker部署工具 延伸:Docker生态圈
在IT行业中,构建RESTful服务是一项常见的任务,它允许应用程序通过HTTP协议提供资源,并通过统一的接口进行交互。本教程将详细介绍如何使用Maven,一个流行的Java构建工具,来搭建RESTful服务。以下是对每个部分的...
提供完善的 restful api 以及 web hook,支持丰富的业务逻辑。 打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善。 全面支持H265/H264/AAC/G711/OPUS。 功能完善,支持集群、按需转协议、按需推拉流、先...
在上述场景中,应用通过RESTful API驱动Docker容器,可能用于运行数据处理或计算服务,这些服务可以在容器化环境中轻松地部署和扩展。 3. **Redis** Redis是一个高性能的键值数据库,常被用作缓存和消息代理。在...
可供Python开发人员用来快速开始在Flask上构建Restful API。堆栈包括Rabbitmq Redis 弹性搜索Logstash PostgreSQLNginx的监督的基巴纳apidoc 包括额外的python库和验证器类。笔记在安装此项目之前,请确保已安装...
运行超级轻巧和简单的RESTful无状态服务器以安全的方式远程计算机(S)的容器。 安装 npm i -g docker-server 或者 docker run -d -p 1717:1717 --restart=always --name=docker-server -v /var/run/docker.sock:/...
Rest Restful 基于rocket服务搭建代码 代码包含的实践用例: 1. restful post, get, put, ...更多细节请移步我的blog:Rust Rocket: 构建Restful服务实战,https://caozy.blog.csdn.net/article/details/133386837
8. **安全性**:在生产环境中,别忘了考虑安全措施,比如设置防火墙规则、启用SSL加密通信、限制对外暴露的服务等。 通过这个教程,你将能够在CentOS 7上搭建一个功能齐全的ELK+Filebeat日志管理平台,利用docker-...
基于Flask Python框架的RESTful服务 Docker容器 此设置需要Docker在您的PC上运行。 我已经使用Windows和Powershell运行命令。 您可以在相应的链接中找到适用于和的下载。 从Flask服务创建图像并运行并将其作为Web...
Node.js是一个轻量级、高性能的JavaScript运行环境,适合构建网络应用和服务。在这里,Node.js作为后端服务器,负责处理HTTP请求,通过Docker Remote API与Swarm集群交互,并将获取的数据结构化。 D3.js(Data-...
Spring启动docker-rest-api 使用Spring Boot,MySQL和Swagger文档以及使用Docker的容器化构建RESTFul API Services 执行步骤: 克隆/下载存储库。 在IDE(Netbeans / Intellij Idea / Eclipse)中打开项目,并为应用...
【描述】:这个项目是一个基于Java的毕业设计,利用SpringBoot框架构建后台服务,通过RESTful API与前端交互,实现了与图灵API的对接,创建了一个能够进行自然语言对话的聊天机器人。SpringBoot以其简洁、快速的特性...
API服务没有做任何认证和授权,Web站点通过内部子网访问RESTful API服务,Docker容器运行在非托管环境中持续集成系统:Jenkins,基于Azure构建的Windows Server 2012 R2一台(Master),和一台Ubuntu 16.04.1 LTS...
1. **Java Web开发**:项目使用Java语言进行后台处理,可能采用了Spring Boot框架,提供了MVC架构,便于构建RESTful服务。 2. **Docker API**:项目需要与Docker守护进程通信,这通常通过Docker Remote API来实现,...
8. **安全性和隔离**:Docker-oo 源码会展示如何利用 Docker 的安全特性,如资源限制、命名空间隔离、cgroups 等,来保护容器和主机的安全。 9. **API 接口**:Docker-oo 可能提供 RESTful API,允许用户和系统通过...
综上所述,这个项目展示了如何利用Spring Boot、PostgreSQL、Hibernate、JUnit和Docker等技术构建一个完整的RESTful Web服务,涵盖从数据存储到测试、部署的全过程。通过这样的架构,我们可以构建出高效、可扩展且...