一、基础Spring-boot快速启动
1.1 快速启动 pom.xml加入如下依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> </parent> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <finalName>spring-docker</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
Spring-boot启动类
@SpringBootApplication public class DockerApplication { public static void main(String[] args) { SpringApplication.run(DockerApplication.class, args); } }
测试API
@RestController public class DockerStarterApi { @GetMapping("/api/docker/hello") public String hello() { return "hello docker"; } }
配置启动配置文件 application.yml
server: port: 9090 # 为了展示效果, 这里改了默认端口8080
检查Spring启动
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.0.2.RELEASE) ... 2018-12-17 17:26:13.385 INFO 48740 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2018-12-17 17:26:13.448 INFO 48740 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9090 (http) with context path '' 2018-12-17 17:26:13.453 INFO 48740 --- [ main] pers.study.docker.DockerApplication : Started DockerApplication in 1.982 seconds (JVM running for 2.602)
检查API是否生效
$ curl -XGET 'http://localhost:9090/api/docker/hello' hello docker
浏览器检查
http://localhost:9090/api/docker/hello
1.2 打包启动
项目打包
完成上面步骤之后,执行打包命令:
$ mvn clean -U -Dmaven.test.skip compile package
因为上面的pom文件里面定义了 finalName
,所以在这里会看到编译打包之后 target
目录下会生成 spring-docker.jar
<finalName>spring-docker</finalName>
测试运行
$ java -jar target/spring-docker.jar
不出意外(有问题留言~)运行结果同上并检查API是否生效即可.
二、Docker快速安装
接下来开始准备Docker
安装
官网下载安装
检查安装、查看帮助
$ docker --version Docker version 18.06.0-ce, build 0ffa825 $ docker --help Usage: docker [OPTIONS] COMMAND A self-sufficient runtime for containers ...
镜像加速
中国官方镜像加速
三、配置Spring-boot + Docker
pom.xml 添加docker plugin
<properties> <docker.image.prefix>springboot</docker.image.prefix> </properties> <build> <plugins> <!-- Docker maven plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <imageName>${docker.image.prefix}/${project.build.finalName}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins> </build>
创建 Dockerfile
文件
根据上面 pom.xml
文件配置 <dockerDirectory>src/main/docker</dockerDirectory>
,这里配置了docker配置文件的目录,所以需要再 src/main
下面创建docker文件夹,同时创建 Dockerfile
文件。
目录机构如图:
docker配置文件结构.png
编辑 Dockerfile
FROM openjdk:8-jdk-alpine VOLUME /tmp ADD spring-docker.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
FROM 表示以Java8为基础镜像
VOLUME 表示挂载目录
ADD 拷贝打包文件并重命名为 app.jar
ENTRYPOINT 根据下面的官方文档解释大致是为了缩短tomcat启动时间而添加的一个系统属性。
We added a
VOLUME
pointing to/tmp
because that is where a Spring Boot application creates working directories for Tomcat by default. The effect is to create a temporary file on your host under/var/lib/docker
and link it to the container under/tmp
. This step is optional for the simple app that we wrote here but can be necessary for other Spring Boot applications if they need to actually write in the filesystem.To reduce Tomcat startup time we added a system property pointing to "/dev/urandom" as a source of entropy. This is not necessary with more recent versions of Spring Boot, if you use the "standard" version of Tomcat (or any other web server).
配置完成!
四、Docker启动Spring-boot
进入 module
执行:
$ mvn package docker:build [INFO] Scanning for projects... ... ---> Running in e1f8aba72bdf Removing intermediate container e1f8aba72bdf ---> 36a61c09f09a ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null} Successfully built 36a61c09f09a Successfully tagged springboot/spring-docker:latest [INFO] Built springboot/spring-docker [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 6.367 s [INFO] Finished at: 2018-12-17T20:48:21+08:00 [INFO] ------------------------------------------------------------------------
查看镜像
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE springboot/spring-docker latest 36a61c09f09a 2 minutes ago 123MB
运行镜像
$ docker run -p 9090:9090 -t springboot/spring-docker . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.0.2.RELEASE) 2018-12-17 12:53:21.502 INFO 1 --- [ main] pers.study.docker.DockerApplication : Starting DockerApplication v1.0-SNAPSHOT on 94991c04be5d with PID 1 (/app.jar started by root in /) 2018-12-17 12:53:21.509 INFO 1 --- [ main] pers.study.docker.DockerApplication : No active profile set, falling back to default profiles: default ··· 2018-12-17 12:53:25.255 INFO 1 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2018-12-17 12:53:25.337 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9090 (http) with context path '' 2018-12-17 12:53:25.353 INFO 1 --- [ main] pers.study.docker.DockerApplication : Started DockerApplication in 4.485 seconds (JVM running for 5.346)
查看容器
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 94991c04be5d springboot/spring-docker "java -Djava.securit…" 53 seconds ago Up 52 seconds 0.0.0.0:9090->9090/tcp quizzical_bhabha
验证启动,访问API
$ curl -XGET 'http://localhost:9090/api/docker/hello' hello docker
至此Docker部署spring-boot搭建完成。
五、移除镜像
停止容器
$ docker stop 94991c04be5d 94991c04be5d
删除容器
$ docker rm 94991c04be5d 94991c04be5d
删除镜像
$ docker image rm springboot/spring-docker Untagged: springboot/spring-docker:latest Deleted: sha256:36a61c09f09ab88cfe5a05f564deb57498682f4a6f3ec01d2a8c4fdc80ac1e41 Deleted: sha256:3f9aef70be6d4d43c205454d8874f10bc2f7280f70eb88cd1f04937b7965dd27 Deleted: sha256:9a5800e93615bb4c5128bb36d31ec494327c01f1a9a768c1ff538badf76628b9 Deleted: sha256:d9c66f907448fa9e61fd5f9267d7fcf8e1f4b52d0a20466414f2f45777261284
六、其他配置功能
添加环境属性
$ docker run -e "SPRING_PROFILES_ACTIVE=prod" -p 9090:9090 -t springbooot/spring-docker
后台启动运行
$ docker run -p 9090:9090 -d springboot/spring-docker
开启容器Debug 修改 Dockerfile
FROM openjdk:8-jdk-alpine VOLUME /tmp ADD spring-docker.jar app.jar ENV JAVA_OPTS '' CMD java -Djava.security.egd=file:/dev/./urandom $JAVA_OPTS -jar app.jar
docker run
复制代码 代码如下:$ docker run -e "JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n" -p 9090:9090 -p 5005:5005 -t springboot/spring-docker
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- 黑鸭子VS绿色森林2007-男女情歌对唱[首版][WAV+CUE]
- 群星《半个月亮爬上来》[DTS-WAV]
- 日本大雷少女COS赏
- 《怪猎荒野》PS5Pro性能表现一般 外媒:会有专门优化
- 《碟中谍8》首支预告公布!阿汤哥手扒飞机惊心动魄
- 孙露《忘不了》1:1黄金母盘直刻珍藏版[低速原抓WAV分轨][1G]
- 试音宝典《试机二十六号》K2HD母盘直刻[低速原抓WAV+CUE][1.1G]
- 群星《唱给女人的歌》24K德国HD金碟[WAV+CUE]
- 孙燕姿.2011-是时候【美妙音乐】【WAV+CUE】
- 苏芮.2003-回首·时代全经典2CD【华纳】【WAV+CUE】
- 梁咏琪.1996-爱自己【EEI】【WAV+CUE】
- IGN经典逆天骚操作名著——《墙头草修炼手册》
- 突然爆火的“网红游戏”,真的有那么多人玩吗?
- 何老师客串《浪人崛起》了?盘点与明星撞脸的角色!
- 【原神】关于星鹫赤羽对珐芙琴班配队下珐露珊主C的适配度分析