国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Spring Boot應用發布到Docker的實現

Spring Boot應用發布到Docker的實現

2021-05-07 13:17一書生VOID的博客 Java教程

這篇文章主要介紹了Spring Boot應用發布到Docker的實現,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Spring官網上有一篇Getting Start,介紹了如何使用Docker發布Spring Boot應用,算是比較詳細了,不過有些細節沒有提及到,而且官網的入門手冊是英文版。這里重新整理記錄一下,算是給英文不好的小伙伴一個參考,也給自己留個備忘。

準備

需要的工具以及運行環境:

  1. JDK 1.8 or later
  2. Maven 3.0 +
  3. 你喜歡的IDE或其他文本編輯器

創建工程

首先,你需要創建一個Spring Boot工程,Spring Tool Suite和IntelliJ IDEA都自帶插件可以創建,還有一種方式是從http://start.spring.io/上創建,推薦使用這種方式。填好表單中的Group IdArtifact Id之后,點擊Generate Project按鈕就可以生成了,將下載后的工程導入到你喜歡的IDE中。

修改pom.xml文件,添加docker-maven-plugin:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?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>org.matrixstudio.springboot</groupId>
  <artifactId>docker</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
 
  <name>docker</name>
  <description>Demo project for Spring Boot</description>
 
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.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>
    <docker.image.prefix>springio</docker.image.prefix>
  </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>
 
      <!-- Docker maven plugin -->
      <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>0.4.3</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>
    </plugins>
  </build>
</project>

docker-maven-plugin插件用于將Spring Boot工程構建為Docker鏡像:

  1. imageName表示Docker鏡像名稱,我們使用Docker的命名規范,命名為:springio/docker
  2. dockerDirectory表示Dockerfile的路徑
  3. resource表示在構建時需要的資源文件,這些文件和Dockerfile放在一起,這里只需要Spring Boot生成的jar文件即可。

打開DockerApplication.java文件,修改成如下內容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package org.matrixstudio.springboot;
 
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;
 
@SpringBootApplication
@RestController
public class DockerApplication {
 
  @RequestMapping("/")
  public String home() {
    return "Hello Docker World";
  }
 
  public static void main(String[] args) {
    SpringApplication.run(DockerApplication.class, args);
  }
}

編譯并運行

執行如下命令運行Spring Boot工程:

?
1
mvn package && java -jar target/docker-0.0.1-SNAPSHOT.jar

打開瀏覽器,輸入http://localhost:8080,如果出現“Hello Docker World”說明運行成功。

注:運行上面的命令時,需要從Maven官方倉庫中下載很多依賴包,國內網絡不太穩定,下載速度較慢,可考慮使用第三方提供的鏡像站,比如阿里的Maven鏡像倉庫。在pom.xml中加入下面配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<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>org.matrixstudio.springboot</groupId>
  <artifactId>docker</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
 
  <!-- Dependencies -->
  ......
 
  <!-- Build -->
  ......
 
  <!-- Aliyun repository -->
  <repositories>
    <repository>
    <id>central</id>
      <name>aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
    </repository>
  </repositories>
</project>

容器化項目

首先要確保你的機器上安裝了Docker,如果你的Docker安裝在一臺Linux服務器上,你需要將上面的Spring Boot工程上傳到該服務器上,下面的步驟假設你是在Linux環境上操作。

創建Dockerfile

Docker使用一個名為Dockerfile的文件來指定image層,所以我們首先需要創建一個Dockerfile文件,執行下面的命令創建Dockerfile文件:

?
1
2
3
4
5
6
7
8
sudo tee src/main/docker/Dockerfile <<-'EOF'
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD docker-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
EOF

大概解釋一下上面的命令:

  1. VOLUME指向了一個/tmp的目錄,由于Spring Boot使用內置的Tomcat容器,Tomcat默認使用/tmp作為工作目錄。效果就是在主機的/var/lib/docker目錄下創建了一個臨時文件,并連接到容器的/tmp。
  2. 將項目的jar文件作為app.jar添加到容器
  3. RUN表示在新創建的鏡像中執行一些命令,然后把執行的結果提交到當前鏡像。這里使用touch命令來改變文件的修改時間,Docker創建的所有容器文件默認狀態都是“未修改”。這對于簡單應用來說不需要,不過對于一些靜態內容(比如:index.html)的文件就需要一個“修改時間”。
  4. 為了縮短Tomcat的啟動時間,我們添加一個java.security.egd的系統屬性指向/dev/urandom作為ENTRYPOINT。

構建Docker鏡像

運行下面的命令構建Docker鏡像:

?
1
mvn package docker:build

構建完成后,運行下面的命令查看:

?
1
sudo docker images

結果為: 

REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
springio/docker              latest              7e2ba2f7e81e        2 minutes ago       195 MB
frolvlad/alpine-oraclejdk8   slim                00d8610f052e        4 days ago          167 MB

可以看到我們構建的鏡像已經出現了,下一步就是運行該鏡像。

運行Docker鏡像

執行下面的命令來運行上一步構建的Docker鏡像:

?
1
sudo docker run -p 8080:8080 -t springio/docker

如果不出意外,你將看到下面的輸出內容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
.  ____     _      __ _ _
 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
 ' |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::    (v1.5.2.RELEASE)
 
2017-03-08 03:34:59.434 INFO 6 --- [      main] o.m.springboot.DockerApplication     : Starting DockerApplication v0.0.1-SNAPSHOT on 00eed53e6928 with PID 6 (/app.jar started by root in /)
2017-03-08 03:34:59.445 INFO 6 --- [      main] o.m.springboot.DockerApplication     : No active profile set, falling back to default profiles: default
2017-03-08 03:34:59.752 INFO 6 --- [      main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b9af9a9: startup date [Wed Mar 08 03:34:59 GMT 2017]; root of context hierarchy
2017-03-08 03:35:03.755 INFO 6 --- [      main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2017-03-08 03:35:03.807 INFO 6 --- [      main] o.apache.catalina.core.StandardService  : Starting service Tomcat
2017-03-08 03:35:03.821 INFO 6 --- [      main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.11
2017-03-08 03:35:04.042 INFO 6 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]    : Initializing Spring embedded WebApplicationContext
2017-03-08 03:35:04.043 INFO 6 --- [ost-startStop-1] o.s.web.context.ContextLoader      : Root WebApplicationContext: initialization completed in 4303 ms
2017-03-08 03:35:04.441 INFO 6 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2017-03-08 03:35:04.455 INFO 6 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean  : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-03-08 03:35:04.457 INFO 6 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-03-08 03:35:04.468 INFO 6 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean  : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-03-08 03:35:04.468 INFO 6 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean  : Mapping filter: 'requestContextFilter' to: [/*]
2017-03-08 03:35:05.110 INFO 6 --- [      main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b9af9a9: startup date [Wed Mar 08 03:34:59 GMT 2017]; root of context hierarchy
2017-03-08 03:35:05.390 INFO 6 --- [      main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto public java.lang.String org.matrixstudio.springboot.DockerApplication.home()
2017-03-08 03:35:05.402 INFO 6 --- [      main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2017-03-08 03:35:05.404 INFO 6 --- [      main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2017-03-08 03:35:05.512 INFO 6 --- [      main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-03-08 03:35:05.512 INFO 6 --- [      main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-03-08 03:35:05.639 INFO 6 --- [      main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-03-08 03:35:06.019 INFO 6 --- [      main] o.s.j.e.a.AnnotationMBeanExporter    : Registering beans for JMX exposure on startup
2017-03-08 03:35:06.168 INFO 6 --- [      main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-03-08 03:35:06.183 INFO 6 --- [      main] o.m.springboot.DockerApplication     : Started DockerApplication in 7.893 seconds (JVM running for 8.743)
2017-03-08 03:35:56.728 INFO 6 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]    : Initializing Spring FrameworkServlet 'dispatcherServlet'
2017-03-08 03:35:56.728 INFO 6 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet    : FrameworkServlet 'dispatcherServlet': initialization started
2017-03-08 03:35:56.774 INFO 6 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet    : FrameworkServlet 'dispatcherServlet': initialization completed in 43 ms

執行以下命令,查看正在運行的Docker容器:

?
1
sudo docker ps

可以看到已經有一個Docker容器在運行了:

?
1
2
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
00eed53e6928    springio/docker   "sh -c 'java $JAVA..."  About a minute ago  Up About a minute  0.0.0.0:8080->8080/tcp  fervent_leavitt

現在輸入http://localhost:8080可以查看到“Hello Docker World”結果。

如果要停止容器,可以執行下面的命令:

?
1
sudo docker stop 00e

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://lw900925.github.io/docker/docker-springboot.html

延伸 · 閱讀

精彩推薦
  • Java教程Spring Security使用中Preflight請求和跨域問題詳解

    Spring Security使用中Preflight請求和跨域問題詳解

    這篇文章主要給大家介紹了關于Spring Security使用中Preflight請求和跨域問題的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定...

    NULL10872021-02-20
  • Java教程Java調用python的方法(jython)

    Java調用python的方法(jython)

    這篇文章主要介紹了Java調用python的方法(jython),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    rually2512020-11-26
  • Java教程詳解json string轉換為java bean及實例代碼

    詳解json string轉換為java bean及實例代碼

    這篇文章主要介紹了詳解json string轉換為java bean及實例代碼的相關資料,這里提供實例代碼幫助大家理解,需要的朋友可以參考下...

    jacksu在簡書3732020-12-06
  • Java教程Java獲取UTC時間的方法詳解

    Java獲取UTC時間的方法詳解

    這篇文章主要介紹了Java獲取UTC時間的方法,結合具體實例形式詳細分析了Java針對時區、本地時間、時間偏移量等相關操作技巧,需要的朋友可以參考下...

    番茄與西紅柿2232020-09-06
  • Java教程簡析Java中的util.concurrent.Future接口

    簡析Java中的util.concurrent.Future接口

    這篇文章主要介紹了簡析Java中的util.concurrent.Future接口,作者把future歸結為在未來得到目標對象的占位符,需要的朋友可以參考下 ...

    goldensun3302019-12-26
  • Java教程java根據模板動態生成PDF實例

    java根據模板動態生成PDF實例

    本篇文章主要介紹了java根據模板動態生成PDF實例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    Enlightenment2402020-09-20
  • Java教程Sprigmvc項目轉為springboot的方法

    Sprigmvc項目轉為springboot的方法

    本篇文章主要介紹了Sprigmvc項目轉為springboot的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    geeksblog9702021-04-01
  • Java教程mybatis一對多查詢功能

    mybatis一對多查詢功能

    這篇文章主要介紹了mybatis一對多查詢功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    精品唯居2912020-08-13
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美视频在线观看免费 | 午夜影院在线 | 欧美日韩伊人 | 日穴视频在线观看 | 久久久综合网 | 国产成人一区二区三区 | 免费看国产 | 国产精品久久久久久久久久三级 | 色888www视频在线观看 | 一区二区av在线 | 日韩电影一区 | 免费一级黄 | 午夜电影| 九九热视频在线 | 日韩欧美国产一区二区三区 | 亚洲精品视频在线播放 | 三区视频 | 国产一区二区三区久久 | 91免费在线视频观看 | 亚洲精品一区二区三区精华液 | 久久精品一区二区三区四区 | 91久久久久久久久久久久久久久久 | 中文字幕四区 | 欧美一级在线 | 99久久婷婷国产精品综合 | 久久久免费视频观看 | 中文字幕视频在线观看 | 日韩电影中文字幕 | 亚洲在线电影 | 99精品国产高清一区二区麻豆 | 日韩欧美在线观看一区二区 | 最新日韩av | 国产婷婷 | 中文字幕精品一区 | 午夜精品久久久久久久久久久久 | 久久大伊人 | 久久中文字幕在线观看 | 国产精品久久久久久久久久久久久 | 欧美不卡 | 亚洲精品成人悠悠色影视 | 精品国产乱码久久久久久久软件 |