美文网首页Spring Boot
Spring Boot实战-docker部署项目

Spring Boot实战-docker部署项目

作者: 我的小熊不见了 | 来源:发表于2019-02-19 10:35 被阅读243次

    由于Spring Boot默认集成了Tomcat,因此启动一个Spring Boot项目非常的简单,部署的时候也可以直接打成jar包使用java -jar命令部署。但是在生产环境下直接使用jar包部署会带来一些问题,比如只有一台服务器但是又想搞集群,再比如项目想要往自动化运维方向发展,这个时候就不得不把docker技术提上日程了。

    • 想要Spring Boot使用docker部署的话,首先需要在pom.xml中加入docker插件,在build节点下新增插件:
                <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.image.prefix}需要我们在pom.xml中的properties节点中定义,用于作为docker镜像的名字。

    • 之后需要配置docker打包的配置文件Dockerfile,在项目main文件夹下新建docker文件夹(也就是上面dockerDirectory路径),新建Dockerfile文件:
    FROM frolvlad/alpine-oraclejdk8:slim
    VOLUME /tmp
    ADD demo.jar app.jar
    RUN sh -c 'touch /app.jar'
    RUN echo "Asia/Shanghai" > /etc/timezone;
    ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /demo.jar" ]
    

    其中的demo为打出的jar包的名字,也就是pom.xml中配置的finalName

    • 接下来在服务器安装docker:
      yum -y install docker-io
    • 启动docker:
      service docker start
    • 上传项目到服务器,或者直接在服务器上用git/svn下载代码
    • 使用docker打包项目:
      mvn clean package docker:build
      打包完成之后,使用docker命令docker images查看所有镜像,可以看到我们刚刚打好的镜像。
    • 运行镜像:
      docker run -p xxxx:xxxx -t image-name
      使用命令运行镜像,也就部署完成了。
    • 查看日志:
      docker logs -f image-name
      其中的image-name为jar包的名字,也就是pom.xml中配置的finalName
      这样就把docker集成到Spring Boot中了,为我们的DevOps迈出了一大步~

    相关文章

      网友评论

        本文标题:Spring Boot实战-docker部署项目

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