一个简单 spring boot 项目
以spring boot 2.0 为例
在pom.xml文件中增加parament依赖
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>2.0.0.release</version> </parent>
增加web和测试依赖
<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>
创建一个 controller,在其中有一个index()方法,访问时返回:hello docker!
@restcontroller
public class controller {
@requestmapping("/")
public string index() {
return "hello docker!";
}
}启动类
@springbootapplication
public class application {
public static void main(string[] args) {
springapplication.run(application.class, args);
}
}添加完毕后启动项目,启动成功后浏览器放问:localhost:8080/,页面返回:hello docker!,说明 spring boot 项目配置正常。
添加dcoker-maven-plugin
在pom.xml的properties节点中添加docker镜像前缀
<properties> <docker.image.prefix>springboot</docker.image.prefix> </properties>
在plugins中添加docker构建插件
<build>
<plugins>
<plugin>
<groupid>org.springframework.boot</groupid>
<artifactid>spring-boot-maven-plugin</artifactid>
</plugin>
<plugin>
<groupid>.spotify</groupid>
<artifactid>docker-maven-plugin</artifactid>
<version>1.0.0</version>
<configuration>
<imagename>${docker.image.prefix}/${project.artifactid}</imagename>
<dockerdirectory>src/main/docker</dockerdirectory>
<resources>
<resource>
<targetpath>/</targetpath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalnmae}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>编写dockerfile
在目录src/main/docker下创建 dockerfile 文件,dockerfile 文件用来说明如何来构建镜像。
from openjdk:8-jdk-alpine volume /tmp add spring-boot-docker-1.0.jar app.jar entrypoint ["java","-djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] expose 8080
这个 dockerfile 文件很简单,构建 jdk 基础环境,添加 spring boot jar 到镜像中,简单的说明一下:
from ,表示使用 jdk8 环境 为基础镜像,如果镜像不是本地的会从 dockerhub 进行下载
volume ,volume 指向了一个/tmp的目录,由于 spring boot 使用内置的tomcat容器,tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
add ,拷贝文件并且重命名
entrypoint ,为了缩短 tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 entrypoint
expose 指明8080端口提供服务
生成docekr镜像
需要有一个 docker 环境来打包 spring boot 项目。
需要三个依赖
jdk环境
maven
docker环境
运行java -version,mvn -version,docker version这些命令不报错就是环境准备好了。
进入项目目录
mvn package -dmavne.test.skip=true java -jar target/spring-boot-docker-1.0.jar
能正常运行,说明jar包没问题。
然后构建镜像
mvn docker:build
显示build success就成功。
使用docker images来查看构建好的镜像
运行镜像
docker run -p 8080:8080 -t springboot/spring-boot-docker
然后curl 127.0.0.1:8080可以看到返回hello docker!,说明成功









