美文网首页个人学习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