美文网首页
Docker部署SpringBoot应用

Docker部署SpringBoot应用

作者: _0xCAFEBABE | 来源:发表于2018-11-20 21:24 被阅读0次

    前言

      之前已经说过docker的安装,也举了一个官网版本的部署的列子。但是我们主要还是做java的,这次就来说一说如何用docker部署SpringBoot应用。

    开始

    搭建一个SpringBoot应用

    POM文件
     <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.5.RELEASE</version>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.jayway.jsonpath</groupId>
                <artifactId>json-path</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
        <repositories>
            <repository>
                <id>spring-releases</id>
                <url>https://repo.spring.io/libs-release</url>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>spring-releases</id>
                <url>https://repo.spring.io/libs-release</url>
            </pluginRepository>
        </pluginRepositories>
    
    SpringBoot的启动类
    package com.tuchen.docker;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class App {
    
        public static void main(String[] args) {
            SpringApplication.run(App.class,args);
        }
    }
    
    controller层
    package com.tuchen.docker.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RequestMapping("/say")
    @RestController
    public class HelloController {
    
        @RequestMapping("/hello")
        public String hello(){
            return "hello world!";
        }
    }
    

    这是一个最简单的SpringBoot应用,我们在本地启动,访问http://localhost:8080/say/hello会在浏览器中显示hello world!。如下图效果:

    至此,我们SpringBoot的demo程序已经写好了!

    开始部署

    上传jar包

      首先创建一个我们部署用的工作目录,用来存放jar包和docker的一些文件,我这里创建了一个test目录,并且已经把jar包打包好上传进来了。

    关于如何上传,mac用户可以在本机的终端窗口用scp命令直接上传。我本人用的windows系统,使用的是图形化上传工具SecureFX

      现在如果你已经上传好了,你的目录下面应该是这个样子:

    编写Dockfile

      接下来就开始编写Dockerfile了,首先在jar包的同级目录创建名字为Dockerfile的文件(注意大小写,并且没有后缀),将下列内容拷贝进去:

    # 指定jdk1.8镜像为运行环境
    FROM java:8
    # 将本地的jar包拷贝进容器中,并且改名为app.jar
    COPY docker-springboot-1.0-SNAPSHOT.jar /app.jar
    # 暴露8080端口
    EXPOSE 8080
    # 容器启动后执行java的启动命令 启动SpringBoot应用
    ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar
    

      Dockerfile创建好了以后,你的目录应该是这个样子,包含一个jar包,一个Dockerfile:


    接下来在test目录下使用命令构建image(注意后面的点):

    #创建一个名字为hello的镜像
    $ docker build -t hello .
    

    构建镜像过程中,docker产生的日志:

    执行docker images查看已经构建好的镜像:

    镜像构建好了以后就开始启动容器了:

    $ docker run -d -p 8080:8080 hello
    

    容器内部启动java应用可能会有点慢,等15秒左右用浏览器打开http://你服务器的地址:8080/say/hello就可以看到那个熟悉的hello world!:

    结束

      到这里,一个简易的SpringBoot已经在Docker容器中启动了,当然生产环境中的启动没有这么简单,但是大致套路是差不多的。我也在慢慢学习,一步一步跟进中。

    相关文章

      网友评论

          本文标题:Docker部署SpringBoot应用

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