1.1 创建SpringBoot的Web项目
l 创建SpringBoot项目
l 选择项目依赖项
l 创建HelloController,添加index方法,返回字符串:Hello Docker!
@RestController
public class HelloController {
@RequestMapping("/")
public String index() {
return "Hello Docker!";
}
}
l 设置application.properties
#设置应用名
spring.application.name=Bootstrap Spring Boot
#设置启动端口
server.port=9090
#热部署生效
spring.devtools.restart.enabled: true
1.2 Web项目添加Docker支持
1.2.1 添加Docker插件
l pom.xml文件添加相关属性
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<docker.image.prefix>springboot</docker.image.prefix>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
</properties>
l pom.xml中添加Docker插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!-- 镜像名称 -->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!-- 镜像标签 -->
<imageTags>
<!--可以指定多个标签 建议弄成自增序列或者时间戳类型,用于区分版本 -->
<imageTag>${maven.build.timestamp}</imageTag>
</imageTags>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<!-- dockerfile文件路径 -->
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
</plugins>
</build>
1.2.2 添加Dockerfile文件
在项目路径(src/main/docker)下添加dockerfile文件,文件内容如下:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD SpringBootInDocker-1.0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
1.3 将项目部署至Docker
1.3.1 检测环境
查看Linux系统是否安装Docker、Java、Maven等环境
1.3.2 测试项目
l 打包Java项目
mvn pacakge
打包结果如下:
l 测试项目是否正常运行
java -jar target/SpringBootInDocker-1.0.0.1-SNAPSHOT.jar
运行结果如下:
l 访问项目:curl http://192.168.56.99:9090
1.3.3 生成Docker镜像
mvn package docker:build
查看结果如下:
1.3.4 运行Docker镜像
docker run -p 9090:9090 -t springboot/springbootindocker
1.3.5 测试Docker项目
curl http://192.168.56.99:9090
1.4 相关问题
1.4.1 mvn docker:build fails with "{}->unix://localhost:80: Connection reset by peer
相关问题:https://github.com/spotify/docker-maven-plugin/issues/357
原因:docker镜像名称不支持大写字母
解决方案:pom.xml文件中的imageName修改成小写字母,即project.artifactId改为小写