美文网首页个人学习dockerspringboot
使用Docker部署SpringBoot Web项目

使用Docker部署SpringBoot Web项目

作者: 问题_解决_分享_讨论_最优 | 来源:发表于2019-12-02 07:31 被阅读0次

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改为小写

打个广告,本人博客地址是:风吟个人博客

相关文章

网友评论

    本文标题:使用Docker部署SpringBoot Web项目

    本文链接:https://www.haomeiwen.com/subject/zkaawctx.html