最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Maven Docker鏡像使用技巧

 更新時(shí)間:2018年06月04日 11:13:53   作者:ilinux_one  
這篇文章主要介紹了詳解Maven Docker鏡像使用技巧,Maven是目前最流行的Java項(xiàng)目管理工具之一,提供了強(qiáng)大的包依賴管理和應(yīng)用構(gòu)建功能。本文以Maven為例介紹了Docker在應(yīng)用構(gòu)建中的一些常見(jiàn)技巧。

本文介紹了Maven Docker鏡像使用技巧,分享給大家,具體如下:

Maven是目前最流行的Java項(xiàng)目管理工具之一,提供了強(qiáng)大的包依賴管理和應(yīng)用構(gòu)建功能。

Docker提供了官方的Maven鏡像可以用于管理和構(gòu)建Java應(yīng)用。與直接安裝使用Maven工具相比,使用Docker鏡像具有更好的可移植性,可以方便地進(jìn)行版本切換,非常適合在持續(xù)集成過(guò)程中使用。

關(guān)于Maven官方鏡像的用法可以參考使用文檔

使用阿里云加速

Maven官方倉(cāng)庫(kù)在國(guó)內(nèi)網(wǎng)絡(luò)下的下載速度實(shí)在是讓人欲哭無(wú)淚,利用阿里云的Maven鏡像可以大大提升軟件包下載速度。

我們可以在官方Maven鏡像的基礎(chǔ)之上添加阿里云鏡像配置。其代碼可以在https://github.com/AliyunContainerService/maven-image 上獲得

它的配置文件settings.xml如下

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
      https://maven.apache.org/xsd/settings-1.0.0.xsd">
 <localRepository>/usr/share/maven/ref/repository</localRepository>
 <mirrors>
 <mirror>
  <!--This sends everything else to /public -->
  <id>aliyun-nexus</id>
  <mirrorOf>*</mirrorOf> 
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
 </mirror>
 <mirror>
  <!--This is used to direct the public snapshots repo in the 
   profile below over to a different nexus group -->
  <id>aliyun-nexus-public-snapshots</id>
  <mirrorOf>public-snapshots</mirrorOf> 
  <url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
  </mirror>
 </mirrors>
</settings>

阿里云容器服務(wù)提供了預(yù)構(gòu)建的Docker鏡像可供直接使用registry.cn-hangzhou.aliyuncs.com/acs/maven,

我們可以像使用mvn命令一樣,直接在當(dāng)前目錄中執(zhí)行如下命令來(lái)構(gòu)建應(yīng)用

復(fù)制代碼 代碼如下:
docker run -it --rm --name maven -v "$(pwd)":/usr/src/app -w /usr/src/app registry.cn-hangzhou.aliyuncs.com/acs/maven mvn clean install

如果希望能夠緩存下載的maven倉(cāng)庫(kù),我們可以利用Docker的文件卷來(lái)實(shí)現(xiàn)

首先執(zhí)行如下命令創(chuàng)建一個(gè)名為“maven-repo”的文件卷

docker volume create --name maven-repo

在之后的調(diào)用中,將其掛載到maven鏡像中倉(cāng)庫(kù)下載目錄上

復(fù)制代碼 代碼如下:
docker run -it --rm --name maven -v "$(pwd)":/usr/src/app -v maven-repo:/usr/share/maven/ref -w /usr/src/app registry.cn-hangzhou.aliyuncs.com/acs/maven mvn clean install

這樣maven倉(cāng)庫(kù)就不會(huì)每次都下載一遍了。

優(yōu)化Dockerfile提升構(gòu)建速度

我們可以在Dockerfile中構(gòu)建應(yīng)用,并利用Docker構(gòu)建時(shí)的分層緩存機(jī)制來(lái)提升構(gòu)建速度

下面是一個(gè)示例Dockerfile.build文件

FROM registry.cn-hangzhou.aliyuncs.com/acs/maven:3-jdk-8

ENV MY_HOME=/usr/src/app
RUN mkdir -p $MY_HOME
WORKDIR $MY_HOME
ADD pom.xml $MY_HOME

# get all the downloads out of the way
RUN ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify","clean","--fail-never"]

# add source
ADD . $MY_HOME

# run maven verify
RUN ["/usr/local/bin/mvn-entrypoint.sh","mvn","verify"]

其中的一個(gè)重要技巧就是先把pom.xml添加到工作目錄,利用maven命令下載應(yīng)用所需jar包之后,再添加應(yīng)用源文件進(jìn)行編譯。這樣只要pom.xml沒(méi)有更新就不會(huì)重新下載所依賴的jar包,可以大大加快鏡像構(gòu)建速度。

我們可以通過(guò)如下命令來(lái)編譯應(yīng)用

docker build -t builder-img -f Dockerfile.build .

應(yīng)用編譯與Docker鏡像構(gòu)建分離

對(duì)于靜態(tài)編譯型語(yǔ)言,我們通常需要將應(yīng)用編譯過(guò)程與鏡像構(gòu)建過(guò)程分離。主要有以下兩個(gè)考慮:

  1. 最終生成的Docker鏡像不應(yīng)該包含源代碼
  2. 最終生成的Docker鏡像應(yīng)該最小化,不應(yīng)該包含編譯時(shí)工具

我們可以將應(yīng)用編譯結(jié)果從Docker鏡像中拷貝出來(lái),方法如下

docker build -t builder-img -f Dockerfile.build .
docker create --name builder builder-img
docker cp builder:/usr/src/app/target ./target

這時(shí)maven構(gòu)建的結(jié)果就被拷貝到當(dāng)前目錄的“target”子目錄下面了。

之后,我們可以利用另外一個(gè)Dockerfile來(lái)構(gòu)建應(yīng)用鏡像了。篇幅有限不再贅述。

總結(jié)

本文以Maven為例介紹了Docker在應(yīng)用構(gòu)建中的一些常見(jiàn)技巧

  1. 利用國(guó)內(nèi)的鏡像站點(diǎn)加速軟件包下載:阿里云和阿里集團(tuán)提供了大量開(kāi)源項(xiàng)目的包管理鏡像站點(diǎn),阿里云容器服務(wù)開(kāi)源項(xiàng)目 https://github.com/AliyunContainerService 中提供很多帶加速能力的Ruby/Python/Node/Maven基礎(chǔ)鏡像可供參考。
  2. 在Docker鏡像構(gòu)建過(guò)程中,為了防止由于代碼變化反復(fù)下載軟件包,可以先把應(yīng)用配置文件加入Dockerfile,在編譯之前提前下載軟件包。比如Ruby的Gemfile, Python的requirements.txt,和NodeJs的package.json都可以采用類似方法。這樣可以更好地利用Docker的分層緩存機(jī)制加速鏡像構(gòu)建過(guò)程。
  3. 應(yīng)用編譯應(yīng)該與Docker鏡像構(gòu)建分離

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Mock進(jìn)行業(yè)務(wù)邏輯層Service測(cè)試詳解

    使用Mock進(jìn)行業(yè)務(wù)邏輯層Service測(cè)試詳解

    這篇文章主要介紹了使用Mock進(jìn)行業(yè)務(wù)邏輯層Service測(cè)試詳解,mock是一種模擬對(duì)象的技術(shù),用于在測(cè)試過(guò)程中替代真實(shí)的對(duì)象,通過(guò)mock,我們可以控制被模擬對(duì)象的行為和返回值,以便進(jìn)行更加精確的測(cè)試,需要的朋友可以參考下
    2023-08-08
  • log4j的使用詳細(xì)解析

    log4j的使用詳細(xì)解析

    最近在整理公司產(chǎn)品的日志輸出規(guī)范,涉及l(fā)og4j的使用介紹,就簡(jiǎn)單整理了一下。需要的朋友可以過(guò)來(lái)參考參考
    2013-08-08
  • mybatis的MappedStatement線程安全探究

    mybatis的MappedStatement線程安全探究

    這篇文章主要為大家介紹了mybatis的MappedStatement線程安全示例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • java中關(guān)于文本文件的讀寫(xiě)方法實(shí)例總結(jié)

    java中關(guān)于文本文件的讀寫(xiě)方法實(shí)例總結(jié)

    這篇文章主要介紹了java中關(guān)于文本文件的讀寫(xiě)方法,實(shí)例總結(jié)了Java針對(duì)文本文件讀寫(xiě)的幾種常用方法,并對(duì)比了各個(gè)方法的優(yōu)劣及特點(diǎn),具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • 隱藏idea的.idea和.mvn文件的解決方案

    隱藏idea的.idea和.mvn文件的解決方案

    這篇文章主要介紹了隱藏idea的.idea和.mvn文件的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java實(shí)現(xiàn)中國(guó)象棋的示例代碼

    Java實(shí)現(xiàn)中國(guó)象棋的示例代碼

    中國(guó)象棋是起源于中國(guó)的一種棋,屬于二人對(duì)抗性游戲的一種,在中國(guó)有著悠久的歷史。由于用具簡(jiǎn)單,趣味性強(qiáng),成為流行極為廣泛的棋藝活動(dòng)。本文將利用Java實(shí)現(xiàn)這一經(jīng)典游戲,需要的可以參考一下
    2022-02-02
  • Java責(zé)任鏈模式定義與用法分析

    Java責(zé)任鏈模式定義與用法分析

    這篇文章主要介紹了Java責(zé)任鏈模式定義與用法,結(jié)合具體實(shí)例分析了java責(zé)任鏈模式的功能、定義、使用方法、適用情況等,需要的朋友可以參考下
    2017-06-06
  • SpringBoot中@ControllerAdvice注解的使用方法

    SpringBoot中@ControllerAdvice注解的使用方法

    這篇文章主要介紹了SpringBoot中@ControllerAdvice注解的使用方法,這是一個(gè)增強(qiáng)的?Controller,對(duì)controller層做異常處理、數(shù)據(jù)預(yù)處理、全局?jǐn)?shù)據(jù)綁定,?springboot?會(huì)自動(dòng)掃描到,不需要調(diào)用,這個(gè)注解是spring?MVC提供的,在springboot中也可以使用,需要的朋友可以參考下
    2024-01-01
  • 詳解Java?中的函數(shù)式接口

    詳解Java?中的函數(shù)式接口

    這篇文章主要為大家介紹了Java中的函數(shù)式接口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助<BR>
    2021-12-12
  • Java 冒泡排序、快速排序?qū)嵗a

    Java 冒泡排序、快速排序?qū)嵗a

    這篇文章主要介紹了Java 冒泡排序、快速排序?qū)嵗a,需要的朋友可以參考下
    2017-05-05

最新評(píng)論

台北市| 瑞金市| 东源县| 洪洞县| 蒙城县| 诸暨市| 永康市| 沭阳县| 沛县| 章丘市| 梅州市| 绍兴市| 泸州市| 郸城县| 淮滨县| 福建省| 军事| 高碑店市| 徐水县| 普兰店市| 皋兰县| 潜江市| 万源市| 江阴市| 白朗县| 宜黄县| 龙陵县| 宁晋县| 安陆市| 乌恰县| 新乡市| 闻喜县| 西华县| 民丰县| 大兴区| 鄂伦春自治旗| 岑巩县| 新营市| 西华县| 汉寿县| 武宣县|