我是这样使用SpringBoot(加入Docker)

作者: 碧波之心 | 来源:发表于2019-03-23 22:16 被阅读413次

    目录

    我是这样使用SpringBoot(安装docker)中对docker有过一些描述,这里使用docker部署项目。

    使用docker

    使用docker是在maven中引入dockerfile-maven-plugin组件,配置组件的参数。写好dockerfile,编译成docker的image,用这个image创建运行容器。

    使用dockerfile-maven-plugin组件

    修改pom.xml文件,在pom.xml中引入dockerfile-maven-plugin组件。代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
        <parent>
            <artifactId>bhparent</artifactId>
            <groupId>com.biboheart.demos</groupId>
            <version>1.0.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>bhhello</artifactId>
    
        <name>bhhello</name>
        <!-- FIXME change it to the project's website -->
        <url>http://www.example.com</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.webjars</groupId>
                <artifactId>webjars-locator</artifactId>
                <version>0.34</version>
            </dependency>
    
            <dependency>
                <groupId>org.webjars</groupId>
                <artifactId>jquery</artifactId>
                <version>3.3.1</version>
            </dependency>
    
            <dependency>
                <groupId>org.webjars</groupId>
                <artifactId>bootstrap</artifactId>
                <version>3.3.7-1</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <!--Docker maven plugin-->
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.4.10</version>
                    <configuration>
                        <repository>${project.artifactId}</repository>
                        <contextDirectory>./</contextDirectory>
                        <tag>${project.version}</tag>
                        <buildArgs>
                            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                        </buildArgs>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    <build></build>标签是这次加的,<repository>${project.artifactId}</repository>配置docker库的名称为项目名称,<tag>${project.version}</tag>docker的tag为项目的版本号,配置buildArgs为jar文件目录。

    dockerfile文件

    完成docker maven plugin引入后,写dockerfile文件。
    在项目根目录(pom.xml)同级目录中创建名称为“Dockerfile”的文件,不需要后缀。如图


    目录

    写dockerfile文件内容如下

    # 基础镜像
    FROM openjdk:8-jdk-alpine
    # 对应pom.xml文件中的dockerfile-maven-plugin插件buildArgs配置项JAR_FILE的值
    ARG JAR_FILE
    # 复制打包完成后的jar文件到/opt目录下
    COPY ${JAR_FILE} /opt/app.jar
    # 启动容器时执行
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/opt/app.jar"]
    # 使用端口80
    EXPOSE 80
    

    这里用openjdk8作为基础镜像,在这之上加入项目文件,最后用java启动项目。docker与spring boot项目的整合基本完成,可以使用了。

    部署项目

    编译项目

    打开控制台,执行docker images查看当前image。这里还是前面安装后测试的tomcat一个image。


    镜像

    在项目根目录执行命令mvn clean package dockerfile:build,打包项目后编译dockerfile。成功后会生成一个image。


    执行打包命令
    生成的镜像

    运行容器

    创建容器并运行,执行命令docker run -idt -p 80:80 --name bhhello bhhello:1.0.0-SNAPSHOT。执行docker ps 查看运行中的容器。

    启动容器
    访问测试
    访问测试
    访问服务正常,为什么这里访问地址是192.168.99.100,这个问题可以到我是这样使用SpringBoot(安装docker)找到答案。

    相关文章

      网友评论

        本文标题:我是这样使用SpringBoot(加入Docker)

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