成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

極力推薦:一個(gè)Docker的maven插件

開(kāi)發(fā) 項(xiàng)目管理
一個(gè)Docker的maven插件的簡(jiǎn)單介紹。我只負(fù)責(zé)搬磚。原文地址:http://www.ofbizian.com/2014/04/a-docker-maven-plugin-for-integration.html

什么是Docker

Docker最近在業(yè)內(nèi)非常火。如果你現(xiàn)在還不知道Docker是什么,你可要小心嘍。今后,你會(huì)發(fā)現(xiàn)自己正在以某種方式使用它。本文假設(shè)你已經(jīng)有了Docker的基礎(chǔ)。如果你現(xiàn)在對(duì)它還不是很熟悉,我確定你以后還會(huì)來(lái)讀這篇文章。

Docker用于集成測(cè)試、復(fù)雜分布式系統(tǒng)演示,非常理想。甚至可以用于運(yùn)行生產(chǎn)環(huán)境下的系統(tǒng)。它是一個(gè)開(kāi)源的軟件容器。你可以把它想像成一個(gè)非常輕的超級(jí)快的虛擬機(jī)。

例子

得到“Integration testing with Maven and Docker”文章和Docker Java API項(xiàng)目的啟發(fā),我寫(xiě)了一個(gè)簡(jiǎn)單的可以管理Docker容器maven插件,Docker Maven Plugin。這個(gè)插件將會(huì)根據(jù)你的配置,在構(gòu)建時(shí)啟動(dòng)容器,構(gòu)建結(jié)束時(shí)停止容器并刪除,如果本地找不到鏡像,Docker會(huì)自動(dòng)去中央倉(cāng)庫(kù)下載。

以下與Apache Camel的集成測(cè)試是被忽略的,因?yàn)闇y(cè)試需要一個(gè)Redis實(shí)例才可以執(zhí)行:

  1. package org.apache.camel.component.redis; 
  2.  
  3.     import org.apache.camel.impl.JndiRegistry; 
  4.     import org.junit.Ignore; 
  5.     import org.junit.Test; 
  6.     import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; 
  7.     import org.springframework.data.redis.core.RedisTemplate; 
  8.  
  9.     @Ignore 
  10.     public class RedisProducerIntegrationTest extends RedisTestSupport { 
  11.         private static final JedisConnectionFactory CONNECTION_FACTORY = new JedisConnectionFactory(); 
  12.  
  13.         static { 
  14.             CONNECTION_FACTORY.afterPropertiesSet(); 
  15.         } 
  16.  
  17.         @Override 
  18.         protected JndiRegistry createRegistry() throws Exception { 
  19.             JndiRegistry registry = super.createRegistry(); 
  20.             redisTemplate = new RedisTemplate(); 
  21.             redisTemplate.setConnectionFactory(CONNECTION_FACTORY); 
  22.             redisTemplate.afterPropertiesSet(); 
  23.  
  24.             registry.bind("redisTemplate", redisTemplate); 
  25.             return registry; 
  26.         } 
  27.  
  28.         @Test 
  29.         public void shouldSetAString() throws Exception { 
  30.             sendHeaders( 
  31.                     RedisConstants.COMMAND, "SET"
  32.                     RedisConstants.KEY, "key1"
  33.                     RedisConstants.VALUE, "value"); 
  34.  
  35.             assertEquals("value", redisTemplate.opsForValue().get("key1")); 
  36.         } 
  37.  
  38.         @Test 
  39.         public void shouldGetAString() throws Exception { 
  40.             redisTemplate.opsForValue().set("key2""value"); 
  41.             Object result = sendHeaders(RedisConstants.KEY, "key2", RedisConstants.COMMAND, "GET"); 
  42.  
  43.             assertEquals("value", result); 
  44.         } 
  45.     } 

我們配置docker-maven-plugin使用一個(gè)Redis鏡像同時(shí)讓主機(jī)的6379端口映射到容器的6379端口:

  1. <plugin> 
  2.         <groupId>com.ofbizian</groupId> 
  3.         <artifactId>docker-maven-plugin</artifactId> 
  4.         <version>1.0.0</version> 
  5.         <configuration> 
  6.             <images> 
  7.                 <image> 
  8.                     <name>dockerfile/redis</name> 
  9.                     <hostConfig> 
  10.                         <![CDATA[ 
  11.                             { 
  12.                                 "PortBindings": { 
  13.                                     "6379/tcp": [ 
  14.                                         { 
  15.                                             "HostIp": "0.0.0.0", 
  16.                                             "HostPort": "6379" 
  17.                                         } 
  18.                                     ] 
  19.                                 } 
  20.                             } 
  21.                     ]]> 
  22.                     </hostConfig> 
  23.                 </image> 
  24.             </images> 
  25.         </configuration> 
  26.         <executions> 
  27.             <execution> 
  28.                 <id>start-docker</id> 
  29.                 <phase>pre-integration-test</phase> 
  30.                 <goals> 
  31.                     <goal>start</goal> 
  32.                 </goals> 
  33.             </execution> 
  34.             <execution> 
  35.                 <id>stop-docker</id> 
  36.                 <phase>post-integration-test</phase> 
  37.                 <goals> 
  38.                     <goal>stop</goal> 
  39.                 </goals> 
  40.             </execution> 
  41.         </executions> 
  42.     </plugin> 

 

插件在編譯期啟動(dòng)一個(gè)Docker容器,然后在集成測(cè)試結(jié)束期關(guān)閉容器。

這是一個(gè)非常簡(jiǎn)單的例子,但是這個(gè)插件支持更多的場(chǎng)景,如多鏡像不同配置;將啟動(dòng)/關(guān)閉容器動(dòng)作定義在不同的maven構(gòu)建期間。Enjoy.

原文鏈接:http://my.oschina.net/u/181141/blog/215524

 

責(zé)任編輯:林師授 來(lái)源: OSCHINA
相關(guān)推薦

2014-03-21 09:44:08

MAC PHPMAC JS

2017-09-04 09:13:45

技術(shù)大牛秘訣

2017-08-23 09:53:49

IT架構(gòu)師知識(shí)圖譜

2023-09-28 21:22:10

2021-07-06 05:36:52

VS code插件編程

2017-09-05 16:27:28

GitHub

2025-04-10 08:35:00

容器編排Docker容器化

2023-12-13 08:24:42

maven插件自動(dòng)化

2011-07-06 13:38:42

Web

2020-09-28 15:55:32

開(kāi)源技術(shù) 工具

2009-09-17 08:48:54

CCNA教材教程CCNA

2017-09-01 13:00:23

Chrome瀏覽器插件

2023-08-18 14:39:20

RCS谷歌

2009-09-03 11:17:01

PHP問(wèn)卷調(diào)查系統(tǒng)

2025-01-09 06:00:00

Checkmate監(jiān)控系統(tǒng)開(kāi)源

2025-05-09 08:40:00

WAF開(kāi)源網(wǎng)站防護(hù)墻

2009-09-14 10:23:59

CCNA自學(xué)教材

2016-03-08 09:52:22

xcode插件開(kāi)發(fā)

2022-05-12 08:04:50

Docker鏡像Python

2011-11-25 09:09:22

jQuery
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日本黄色不卡视频 | 天天干天天干 | 欧美一区免费 | 日本一区二区不卡 | 亚洲天堂精品久久 | www.日本在线播放 | 国产一区不卡 | 中文日韩在线视频 | 北条麻妃一区二区三区在线观看 | 成人av免费 | 精品国产青草久久久久福利 | 国产97视频在线观看 | 午夜一级黄色片 | 欧美日韩一区二区三区四区 | 在线观看免费观看在线91 | 伊人青青久久 | 性一交一乱一透一a级 | 久久高清国产视频 | 国产中文视频 | 围产精品久久久久久久 | 欧美成年网站 | 久久久成人动漫 | 8x国产精品视频一区二区 | 日韩精品一区二区不卡 | 亚洲激情网站 | 蜜月va乱码一区二区三区 | 久久精品亚洲精品国产欧美 | 国产免费又黄又爽又刺激蜜月al | 毛片黄片| 91 视频网站| 性色av网站| 美女黄色在线观看 | 观看av| 成人一区二区三区在线 | 超碰成人免费 | 一区二区三区久久 | 在线观看中文视频 | 欧美精品在线观看 | 国产在线视频在线观看 | 日韩欧美一区二区三区免费观看 | 最近日韩中文字幕 |