文章首发于微信公众号《程序员果果》 地址:
一、什么是docker ?
简介
Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。
docker的应用场景
- web应用的自动化打包和发布;
- 自动化测试和持续集成、发布;
- 在服务型环境中部署和调整数据库或其他的后台应用;
- 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。
二、整合 docker
创建工程
创建一个springboot工程springboot-docker
1. 启动类
package com.gf;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;@SpringBootApplication@RestControllerpublic class SpringbootDockerApplication { public static void main(String[] args) { SpringApplication.run(SpringbootDockerApplication.class, args); } @GetMapping("/{name}") public String hi(@PathVariable(value = "name") String name) { return "hi , " + name; }}
2. 将springboot工程容器化
我们编写一个Dockerfile来定制镜像,在src/main/resources/docker 下创建Dockerfile文件
FROM frolvlad/alpine-oraclejdk8:slimVOLUME /tmpADD springboot-docker-0.0.1-SNAPSHOT.jar app.jarRUN sh -c 'touch /app.jar'ENV JAVA_OPTS=""ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
3. pom.xml
我们通过maven 构建docker镜像。 在maven的pom目录,加上docker镜像构建的插件
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.1.RELEASE com.gf springboot-docker 0.0.1-SNAPSHOT jar springboot-docker Demo project for Spring Boot UTF-8 UTF-8 1.8 gf org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin com.spotify docker-maven-plugin 1.2.0 ${docker.image.prefix}/${project.artifactId} src/main/resources/docker / ${project.build.directory} ${project.build.finalName}.jar
构建镜像
我们运行下面的命令构建镜像:
mvn cleanmvn package docker:bulid
构建成功后,我们通过下面的命令查看镜像:
docker images
启动镜像:
#c2dba352c3c1 为镜像IDdocker run -p 8080:8080 -t c2dba352c3c1
之后我们就可以访问服务了。
源码
关注我
欢迎扫码或微信搜索公众号《程序员果果》关注我,关注有惊喜~