1. 程式人生 > >Docker構建SpringBoot映象

Docker構建SpringBoot映象

一、使用STS構建springBoot專案

專案結構

├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─example
│  │  └─resources
│  │      ├─static
│  │      └─templates
│  └─test
│      └─java
│          └─com
│              └─example
└─target

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">
<modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>springboot</artifactId
>
<version>1.0</version> <packaging>jar</packaging> <name>SpringBoot</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId
>
spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <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> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

Application.java

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class Application {

    @RequestMapping("/")
    public String index(){

        return "Hello Docker .";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

使用maven打包專案,在target目錄下得到springboot-1.0.jar

mvn clean pakcage //先清理再進行打包

target/springboot-1.0.jar

run專案


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.1.RELEASE)
......
2017-02-22 13:51:45.408  INFO 1588 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-02-22 13:51:45.423  INFO 1588 --- [           main] com.example.Application                  : Started Application in 2.004 seconds (JVM running for 2.622)
2017-02-22 13:51:58.432  INFO 1588 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2017-02-22 13:51:58.433  INFO 1588 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started
2017-02-22 13:51:58.452  INFO 1588 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 19 ms
Hello Docker .

二、構建Docker映象,啟動Docker容器

上傳springboot-1.0.jar到裝有Docker服務的linux系統,這裡我用的是ubutun14.04

這裡寫圖片描述

開始編寫Dockerfile檔案,

vi Dockerfile

Dockerfile的內容,儲存退出

FROM hub.c.163.com/xbingo/jdk8
ADD ./springboot-1.0.jar  /springboot.jar
EXPOSE 8080
CMD ["java","-jar","/springboot.jar"]

ll檢視

root@ubuntu:/data/test# ll
total 14004
drwxr-xr-x 2 root root     4096 Feb 21 22:38 ./
drwxr-xr-x 5 root root     4096 Feb 21 22:20 ../
-rw-r--r-- 1 root root      124 Feb 21 22:25 Dockerfile
-rw-r--r-- 1 root root 14326404 Feb 21 22:20 springboot-1.0.jar
root@ubuntu:/data/test#

構建映象,別忘記後面的”.”,表示Dockerfile的檔案位置

root@ubuntu:/data/test# docker build -t springboot:1.0 .
Sending build context to Docker daemon 14.33 MB
Step 1/4 : FROM hub.c.163.com/xbingo/jdk8
 ---> 3273714c9663
Step 2/4 : ADD ./springboot-1.0.jar /springboot.jar
 ---> 556a8eba0f6a
Removing intermediate container 8d6a88c466e2
Step 3/4 : EXPOSE 8080
 ---> Running in 327fc70b5fa9
 ---> e5e6c6b29983
Removing intermediate container 327fc70b5fa9
Step 4/4 : CMD java -jar /springboot.jar
 ---> Running in 4a9c41547c8c
 ---> c745ff82ccac
Removing intermediate container 4a9c41547c8c
Successfully built c745ff82ccac
root@ubuntu:/data/test# 

檢視映象列表,已生成springboot映象

root@ubuntu:/data/test# docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
springboot                         1.0                 c745ff82ccac        5 minutes ago       182 MB
root@ubuntu:/data/test# 

啟動容器,並檢視執行容器列表

root@ubuntu:/data/test# docker run -d -p 8080:8080 --name springboot springboot:1.0
840e8f08bdbbf10f3050c4c7ec38ba7c1ce90378b0f31a3a8cc7a1d2ddf66119
root@ubuntu:/data/test# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                       NAMES
840e8f08bdbb        springboot:1.0           "java -jar /spring..."   4 seconds ago       Up 3 seconds        0.0.0.0:8080->8080/tcp                      springboot

這裡寫圖片描述

要想檢視Docker容器日誌,顯示日誌結果和第一步的啟動日誌一致

docker logs springboot