自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開發(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ì)來讀這篇文章。

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

例子

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

以下與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é)任編輯:林師授 來源: OSCHINA
相關(guān)推薦

2014-03-21 09:44:08

MAC PHPMAC JS

2023-09-28 21:22:10

2017-09-04 09:13:45

技術(shù)大牛秘訣

2021-07-06 05:36:52

VS code插件編程

2017-08-23 09:53:49

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

2023-12-13 08:24:42

maven插件自動(dòng)化

2025-04-10 08:35:00

容器編排Docker容器化

2017-09-05 16:27:28

GitHub

2020-09-28 15:55:32

開源技術(shù) 工具

2017-09-01 13:00:23

Chrome瀏覽器插件

2011-07-06 13:38:42

Web

2025-01-09 06:00:00

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

2009-09-17 08:48:54

CCNA教材教程CCNA

2023-08-18 14:39:20

RCS谷歌

2009-09-03 11:17:01

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

2016-03-08 09:52:22

xcode插件開發(fā)

2022-05-12 08:04:50

Docker鏡像Python

2022-12-05 08:55:39

MavenGradle項(xiàng)目

2011-11-25 09:09:22

jQuery

2025-01-08 06:00:00

Argus開源安全檢查工具
點(diǎn)贊
收藏

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