使用docker构建第一个spring boot项目

在看了一些简单的docker命令之后 打算自己尝试整合一下docker+spring boot项目
本文是自己使用docker+spring boot 发布一个项目
1.docker介绍 docke是提供简单易用的容器接口
Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
2.docker centos 安装
yum install docker-io –y
systemctl start docker
安装完成后 测试 docker info 或者docker version
3.镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,国内很多云服务商都提供了加速器服务
https://dockerhub.azk8s.cn、https://reg-mirror.qiniu.com、http://hub-mirror.c.163.com等
然后在 /etc/docker/daemon.json中写入如下内容(如果文件不存在请新建该文件)
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}
之后重新启动服务。

4.其他软件安装

本文是基于centos下操作的,还需要在自己的服务器上装好 meven和java软件。

5.开始构建项目

直接新建一个spring boot 项目

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

 然后新建一个controller

@RestController
public class Ctrldocker {
    @RequestMapping("/docker")
    public String test(){
        return "hello this is docker!";
    }
}

 spring boot 项目新建好之后,在本地测试一下,启动服务访问127.0.0.1:8080/docker 得到返回参数 hello this is docker! 说明spring boot 项目没有问题。下面开始配置docker

6.配置spring boot中docker的配置

在pom文件中的增加 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>
                    <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>

  在pom文件中的properties中增加docker镜像的名字

<properties>
	<docker.image.prefix>springboot</docker.image.prefix>
</properties>

  在spring boot项目中增加一个docker文件夹,并在文件夹中新增一个Dockerfile文件

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

  文件的意思很简单

 FROM ,是指本项目 继承openjdk:8-jdk-alpine镜像,如果没有没有则会在dockerhub上拉取过来。

VOLUME ,VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录

ADD ,拷贝文件并且重命名

ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

到此位置docker + spring boot 项目构建基本完成 最后开始测试打包。

7.测试发布

将我们的项目发送到我们的服务器中,进入项目路径

#打包
mvn package
#启动
java -jar target/demo-0.0.1-SNAPSHOT.jar

启动成功则说明我们的正常打包流程是没有问题的,下面我们开始构建一个镜像

mvn package docker:build

看懂BUILD SUCCESS 后说明镜像就构建好了 

我们可以使用docker images 

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
springboot/demo             latest              457d124b2fdb        4 days ago          122 MB

  这里可以看到我们构建成功的镜像

docker run -p 8080:8080 -t springboot/demo

运行我们的镜像,运行成功后 我们可以使用访问服务器的地址 http://xxx.xx.xx:8080/docker 查看返回信息

posted @ 2019-07-19 15:02  回忆漫长  阅读(342)  评论(0编辑  收藏  举报