IDEA Springboot docker 构建项目

一、新建Maven工程,Pom.xml如下

<?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>Docker</artifactId>
        <groupId>com.tonels</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>dockerDemo1</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.tonels</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <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>
            <version>2.0.8.RELEASE</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <finalName>docker-spring-boot</finalName>
    </build>

</project>

二、项目结构,没有很复杂

三、代码展示

3.1 DkController

package dockerDemo1.controller;

import com.google.common.collect.Lists;
import dockerDemo1.model.Book;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/")
public class DkController {


    private static List<Book> books = null;
    static {
        Book b1 = new Book().setId("1").setName("霍乱").setAuthor("马尔克斯").setPrice("12");
        Book b2 = new Book().setId("2").setName("百年孤独").setAuthor("马尔克斯").setPrice("12");
        Book b3 = new Book().setId("3").setName("少年闰土").setAuthor("鲁迅").setPrice("12");
        Book b4 = new Book().setId("4").setName("三味书屋").setAuthor("鲁迅").setPrice("12");

        books=  Lists.newArrayList(b1,b2,b3,b4);
    }

    @GetMapping("/book")
    public Book test(){
        Book book = new Book().setId("1").setName("霍乱").setAuthor("马尔克斯").setPrice("12");

//        Map<String, String> pojoToMap = Splitter.on(",").withKeyValueSeparator(":").split(JSONUtil.toJsonStr(book));
//        JSONUtil.
        return book;
    }

    @GetMapping("/list")
    public List<Book> testAll(){

        return books;
    }

}

3.2 Book

package dockerDemo1.model;

import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
public class Book {

    private String id;

    private String name;

    private String author;

    private String price;

}

3.3 DkDemo1

package dockerDemo1;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DkDemo1 {
    public static void main(String[] args) {
        SpringApplication.run(DkDemo1.class);
    }


}

3.4 application.yml

server:
  port: 8085

项目没有很复杂,相信大家都能很轻松的搭出来,打好之后,本地 run 一下,请求

localhost:8085/book

或者

localhost:8085/list

是有相应的数据返回的,这一步已经完成本博文的80%了,其实Docker就是一个项目构建工具,就是实现基于项目的快速部署,上线,因此,项目完成后,就已经完成80%了,后面需要加强学习Docker的就是关于快速的问题了。

四、Docker 部署,我是用本地Windows安装,操作使用的Docker,这里是windows 版docker的使用说明。

4.1 新建dockerfile ,在这个目录下


文件内容如下

FROM openjdk:8

ADD target/docker-spring-boot.jar docker-spring-boot.jar

ENTRYPOINT ["java","-jar","docker-spring-boot.jar"]

EXPOSE 8085

可以看出,这里有个Jar,就是我们之前的项目用IDEA的Maven插件打包,将打包成这个包名

4.2 打包

4.Docker build,进入IDEA的终端命令行下,执行

docker build  -t springbootdocker1 dockerDemo1

注意,这个命令包含,两个文件名,一个是Jar包名,一个是项目名,执行成功可以看到,其实Docker build 是按之前我们定义的dockerfile,四条命令,批次执行的

4.1 docker images,可看到镜像已生成

4.2 docker run ,后台运行 -itd

docker run  -itd -p 8085:8085 springbootdocker1

本地访问

localhost:8085/book

或者

localhost:8085/list

可看到有数据返回,容器正在成功运行

4.3 docker push,可推到Docker Hub的远程库

因为有些操作,和上一篇类似,这里我就省略了。。。

4.3 docker push,可推到Docker Hub的远程库

4.4 远程测试,我用自己的阿里Linux服务器,只装了 docker,甚至连JDK都没有装

但我试着 pull 一下,这个项目

docker pull tonels/springbootdocker1

然后运行,

docker run -p 8085:8085 tonels/springbootdocker1

浏览器,输入http://111.231.71.139:8085/list,可看到项目已部署,这个Ip是我阿里云服务器的地址,可以看到Dokcer是真的运行在自己的容器里的,一点都不依赖外部Linux的环境,唯一依赖的就是Docker是安装在Linux上的。。

[
{
"id": "1",
"name": "霍乱",
"author": "马尔克斯",
"price": "12"
},
{
"id": "2",
"name": "百年孤独",
"author": "马尔克斯",
"price": "12"
},
{
"id": "3",
"name": "少年闰土",
"author": "鲁迅",
"price": "12"
},
{
"id": "4",
"name": "三味书屋",
"author": "鲁迅",
"price": "12"
}
]

上一篇,这里有更详细的操作

下一篇,补充一下,关于进入Docker容器,查看我们运行具体的镜像,容器信息

ggggggrtr

全部评论

相关推荐

整顿职场的柯基很威猛:这种不可怕,最可怕的是夹在一帮名校里的二本选手,人家才是最稳的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务