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

極力推薦:一個Docker的maven插件

開發 項目管理
一個Docker的maven插件的簡單介紹。我只負責搬磚。原文地址:http://www.ofbizian.com/2014/04/a-docker-maven-plugin-for-integration.html

什么是Docker

Docker最近在業內非常火。如果你現在還不知道Docker是什么,你可要小心嘍。今后,你會發現自己正在以某種方式使用它。本文假設你已經有了Docker的基礎。如果你現在對它還不是很熟悉,我確定你以后還會來讀這篇文章。

Docker用于集成測試、復雜分布式系統演示,非常理想。甚至可以用于運行生產環境下的系統。它是一個開源的軟件容器。你可以把它想像成一個非常輕的超級快的虛擬機。

例子

得到“Integration testing with Maven and Docker”文章和Docker Java API項目的啟發,我寫了一個簡單的可以管理Docker容器maven插件,Docker Maven Plugin。這個插件將會根據你的配置,在構建時啟動容器,構建結束時停止容器并刪除,如果本地找不到鏡像,Docker會自動去中央倉庫下載。

以下與Apache Camel的集成測試是被忽略的,因為測試需要一個Redis實例才可以執行:

  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使用一個Redis鏡像同時讓主機的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> 

 

插件在編譯期啟動一個Docker容器,然后在集成測試結束期關閉容器。

這是一個非常簡單的例子,但是這個插件支持更多的場景,如多鏡像不同配置;將啟動/關閉容器動作定義在不同的maven構建期間。Enjoy.

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

 

責任編輯:林師授 來源: OSCHINA
相關推薦

2014-03-21 09:44:08

MAC PHPMAC JS

2017-09-04 09:13:45

技術大牛秘訣

2023-09-28 21:22:10

2017-08-23 09:53:49

IT架構師知識圖譜

2021-07-06 05:36:52

VS code插件編程

2017-09-05 16:27:28

GitHub

2023-12-13 08:24:42

maven插件自動化

2025-04-10 08:35:00

容器編排Docker容器化

2020-09-28 15:55:32

開源技術 工具

2011-07-06 13:38:42

Web

2009-09-17 08:48:54

CCNA教材教程CCNA

2023-08-18 14:39:20

RCS谷歌

2017-09-01 13:00:23

Chrome瀏覽器插件

2009-09-03 11:17:01

PHP問卷調查系統

2025-05-09 08:40:00

WAF開源網站防護墻

2025-01-09 06:00:00

Checkmate監控系統開源

2009-09-14 10:23:59

CCNA自學教材

2016-03-08 09:52:22

xcode插件開發

2022-05-12 08:04:50

Docker鏡像Python

2022-12-05 08:55:39

MavenGradle項目
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天综合永久入口 | 亚洲精品1区2区3区 91免费看片 | 99亚洲精品 | 国产伦精品一区二区三毛 | 欧美男人天堂 | 久久91精品国产一区二区三区 | 免费成人在线网站 | 国产精品一区久久久 | 中文字幕日本一区二区 | 自拍偷拍亚洲视频 | 免费a v网站 | 国产精久久久久久久妇剪断 | 欧美三区在线观看 | 在线观看中文字幕av | 在线中文字幕亚洲 | 欧美二区在线 | 精品国产99 | 亚洲免费观看 | 欧洲一区视频 | 国产精品久久亚洲7777 | 亚洲自拍偷拍欧美 | 在线播放亚洲 | 日本不卡一区 | 一区二区三区视频在线观看 | 国产激情毛片 | 欧美日韩一区二区三区四区五区 | 一区二区三区国产好 | 国产成人精品一区二区三区在线观看 | 午夜一区二区三区 | www一级片 | 国产精品久久久久久av公交车 | 91精品国产综合久久久久久 | 久久久国产精品 | www.99热这里只有精品 | 日韩成人 | 国产欧美日韩精品一区 | 免费午夜视频 | 日韩高清不卡 | 精品久久久久一区二区国产 | 国产欧美一区二区三区在线看蜜臀 | 91精品久久久久久久久久小网站 |