亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Docker容器化spring boot應用詳解

2024-09-01 13:54:34
字體:
來源:轉載
供稿:網友

前置條件

容器化spring boot應用所需環境:

  1. jdk 1.8 +
  2. maven 3.0 +

我們的需求是:使用maven打包,將spring boot應用制作成docker鏡像并上傳到docker hub。在其他機器上,可以直接docker pull并運行容器。

創建spring boot應用

spring boot 包結構為:

└── src  └── main    └── java      └── me        └── ithakar

創建spring boot Application主類,src/main/java/me/ithakar/Application.java

package me.ithakar;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@RestControllerpublic class Application {  @RequestMapping("/")  public String home() {    return "docker app running";  }  public static void main(String[] args) {    SpringApplication.run(Application.class, args);  }}

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>me.ithakar</groupId>  <artifactId>docker-app</artifactId>  <version>0.1.0</version>  <parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>1.5.3.RELEASE</version>  </parent>  <properties>    <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>

打包并啟動應用

mvn package && java -jar target/docker-app-0.1.0.jar

訪問 http://localhost:8080/ ,獲得響應:

docker app running

則spring boot應用啟動成功

創建Dockerfile文件

Dockerfile是一個文本文件,類似shell腳本,其內包含了一條條的指令。每一條指令的內容,就是描述對應的鏡像層應當如何構建。

Dockerfile位置:src/main/docker/Dockerfile

FROM frolvlad/alpine-oraclejdk8:slim VOLUME /tmp ADD docker-app-0.1.0.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" ]
  1. FROM 命令指定基礎鏡像,以一個鏡像為基礎,在其上進行定制。在這里我們的基礎鏡像是frolvlad/alpine-oraclejdk8:slim。
  2. VOLUME 定義匿名卷。對于可能需要操作數據庫類需要保存動態數據的應用,其數據文件應該保存在主句的卷,而不是容器的儲存層。在這里我們是將其掛載在了/tmp這個位置,從而保證了容器的無狀態化。
  3. ADD 命令是較高級的復制命令,將jar包復制到/app.jar
  4. ENTRYPOINT 容器運行后默認執行的命令

添加maven docker插件

docker maven插件是為了方便java開發者,由spotify公司開發的一款maven插件。添加以下代碼至pom.xml文件中。

<properties>  <docker.image.prefix>ithaka</docker.image.prefix></properties><build>  <plugins>    <plugin>      <groupId>com.spotify</groupId>      <artifactId>docker-maven-plugin</artifactId>      <version>0.4.11</version>      <configuration>        <imageName>${docker.image.prefix}/${project.artifactId}:${project.version}</imageName>        <dockerDirectory>src/main/docker</dockerDirectory>        <pushImage>true</pushImage>        <resources>          <resource>            <targetPath>/</targetPath>            <directory>${project.build.directory}</directory>            <include>${project.build.finalName}.jar</include>          </resource>        </resources>      </configuration>    </plugin>  </plugins></build>

注意,docker.image.prefix中的ithaka為我的docker hub 賬戶,使用時將其換成自己的

使用maven命令打包應用、構建docker鏡像并上傳鏡像到docker hub:

mvn package docker:build -DpushImage

此時我們將得到一個報錯:

[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.11:build (default-cli) on project docker-app: Exception caught: denied: requested access to the resource is denied

這是因為我們在maven中push時,并沒有包含docker的用戶信息,所以權限校驗失敗。

解決方法為,在maven全局setting.xml配置中,添加docker hub server信息

<server>    <id>docker-hub</id>    <username>ithaka</username>    <password>密碼</password>    <configuration>      <email>郵箱</email>    </configuration></server>

在pom.xml中的docker-maven-plugi插件中,指定server

<plugin>  <groupId>com.spotify</groupId>  <artifactId>docker-maven-plugin</artifactId>  <configuration>    <serverId>docker-hub</serverId>  </configuration></plugin>

再繼續執行

mvn package docker:build -DpushImage

出現

The push refers to a repository [docker.io/ithaka/docker-app]
8c02854cd300: Pushed
a03c3b5dbe04: Pushed
8018d52798bb: Pushed
1e6468b956ae: Pushed
3fb66f713c9f: Pushed

0.0.1: digest: sha256:63456345745755577c19103dcf4838894e34d45a68a1ec23b2f69d6f059 size: 1375

即為上傳docker hub成功。

啟動docker容器

在另外一臺機器上,執行命令

docker run -p 8080:8080 -t ithaka/docker-app

訪問http://ip:8080/ ,獲得響應:

docker app running

docker應用啟動成功

參考文檔:

Spring Boot with Docker

docker-maven-plugin

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
午夜剧场成人观在线视频免费观看| 国产精品综合网站| 国产精品91久久久| 亚洲香蕉在线观看| 国产精品欧美激情| 欧美成人午夜视频| 欧美极品少妇xxxxⅹ免费视频| 国产精品专区一| 亚洲国产精品国自产拍av秋霞| 91精品国产九九九久久久亚洲| 91精品国产高清自在线看超| 亚洲高清在线观看| 久久久久久久国产| 欧美天天综合色影久久精品| 精品美女久久久久久免费| 最近更新的2019中文字幕| 欧美午夜丰满在线18影院| 国产亚洲免费的视频看| 欧美成人在线网站| 一区二区成人av| 欧美性色19p| 成人信息集中地欧美| 日韩av手机在线观看| 欧美日韩国产精品一区二区三区四区| 三级精品视频久久久久| 欧洲精品在线视频| www.欧美精品一二三区| 国产精品 欧美在线| 亚洲视频网站在线观看| 久久久免费在线观看| 尤物tv国产一区| 欧美性xxxx18| 久久在线免费观看视频| 97av在线视频| 亚洲成年网站在线观看| 黑人巨大精品欧美一区免费视频| 国产精品日韩在线播放| 久久香蕉精品香蕉| 精品美女久久久久久免费| 中文字幕日韩在线播放| 欧美日韩999| 色悠久久久久综合先锋影音下载| 亚洲精品欧美日韩专区| 国产精品男人爽免费视频1| 日韩精品久久久久久福利| 91精品国产高清自在线看超| 久久99亚洲热视| 日韩av理论片| 亚洲剧情一区二区| 欧美性受xxx| 亚洲午夜激情免费视频| 国产精品一二三视频| 国产日韩精品综合网站| 日本19禁啪啪免费观看www| 日韩中文字幕在线| 欧美在线一级va免费观看| 成人免费网站在线看| 亚洲精品美女视频| 亚洲图片在线综合| 91精品国产高清| 色老头一区二区三区| 伊人精品在线观看| 88xx成人精品| 性欧美亚洲xxxx乳在线观看| 国产精品私拍pans大尺度在线| 欧美成在线视频| 成人欧美一区二区三区在线| 日本免费一区二区三区视频观看| 亚洲精品免费在线视频| 亚洲精品久久久久久下一站| 一区三区二区视频| 最好看的2019年中文视频| 日韩精品视频在线观看免费| 亚洲欧美在线一区| 中文字幕在线看视频国产欧美| 久久久久久中文字幕| 国产精品电影在线观看| 91牛牛免费视频| 亚洲自拍在线观看| 最近的2019中文字幕免费一页| 国产精品久久久久91| 欧美在线视频在线播放完整版免费观看| 国产精品欧美风情| xxxxx91麻豆| 91av在线播放| 色婷婷**av毛片一区| 欧洲永久精品大片ww免费漫画| 久久久久久国产| 欧美精品日韩www.p站| 国产精品亚洲欧美导航| 欧美精品18videos性欧| www.久久草.com| 中文日韩在线观看| 亚洲人成网站色ww在线| 亚洲欧美日韩国产中文| 国产福利精品视频| 日韩精品亚洲元码| 亚洲视频电影图片偷拍一区| 成人激情在线观看| 欧美夫妻性视频| 欧美色欧美亚洲高清在线视频| 久久99亚洲精品| 91色中文字幕| 色樱桃影院亚洲精品影院| 欧美性视频精品| 亚洲精品欧美日韩专区| 亚洲一区二区中文| 中文字幕在线看视频国产欧美| 国产精品亚洲第一区| 亚洲精品电影久久久| 国产精品白丝av嫩草影院| 久久精品色欧美aⅴ一区二区| 国内精品伊人久久| 中文字幕国内精品| 成人有码在线播放| 亚洲成人久久久久| 欧美性猛交xxxx黑人猛交| 亚洲午夜女主播在线直播| 午夜精品一区二区三区在线视| 欧洲成人在线观看| 国产精品久久久久久av福利软件| 久久精品国产96久久久香蕉| 亚洲欧美成人一区二区在线电影| 色777狠狠综合秋免鲁丝| 亚洲丝袜在线视频| 精品露脸国产偷人在视频| 久久的精品视频| 国产精品丝袜久久久久久高清| 深夜福利日韩在线看| 亚洲国产精品久久精品怡红院| 国产精品av在线| 激情成人在线视频| 国产精品毛片a∨一区二区三区|国| 欧美激情视频一区| 国产精品日韩在线| 精品一区二区三区电影| 国产中文字幕日韩| 自拍偷拍亚洲欧美| 法国裸体一区二区| www.亚洲一二| 亚洲欧美自拍一区| 中文字幕在线精品| 69久久夜色精品国产69乱青草| 国产精品一区二区久久久久| 日韩国产在线播放| 欧美精品电影免费在线观看| 中文欧美在线视频| 国产精品久久久久久久久男| 亚州精品天堂中文字幕| 亚洲精品v欧美精品v日韩精品| 国产一区二区香蕉| 国产精品久久久久9999| 久久久久国产精品免费网站| 91色琪琪电影亚洲精品久久| 在线观看视频亚洲| 国产91精品久| 日韩电影在线观看永久视频免费网站| 亚洲嫩模很污视频| 色中色综合影院手机版在线观看| 欧美极品美女电影一区| 在线观看中文字幕亚洲| 这里只有精品视频| 精品人伦一区二区三区蜜桃免费| 久久国产精彩视频|