好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 使用遠程Docker進行集成測試的環境搭建過程

使用遠程Docker進行集成測試的環境搭建過程

熱門標簽:威海人工外呼系統供應商 寧夏房產智能外呼系統要多少錢 在百度地圖標注車輛 藍點外呼系統 做外呼系統的公司違法嗎 烏海智能電話機器人 貴陽教育行業電話外呼系統 撫順移動400電話申請 400電話申請方案

需求背景

團隊有集成測試的需求,集成測試需要依賴一些中間件,比如mysql,rabbitmq。每個研發人員有對自己開發的那部分代碼進行測試編寫和運行檢測的需求。

為了不互相影響,可以選擇在研發本地搭建自己的依賴環境,我們希望這些環境搭建要容易、快速,且方便清理。

使用docker進行環境搭建

而docker,則能很好實現上述訴求。
但僅僅這樣還不夠,我們還面臨著以下一些問題

  • 本地環境搭建的繁瑣。每個研發,都要在本地安裝docker環境,這會導致在使用上的一些門檻和不便,以我司為例,由于有嚴格的網絡管控,我們都是內網進行開發,無法聯網。特別windows 在安裝docker時,需要聯網。雖然可以想辦法解決,但每個新來小伙伴都要經歷一些本地環境安裝調試過程,實屬繁瑣
  • 測試運行速度無法保證。當一個項目依賴中間件較多時,基于本地的docker也會占用大量的資源影響測試速度
  • 多環境集成測試麻煩。由于集成測試依賴本地docker,那么這份代碼在不同的環境,比如在Jenkins上打包運行時,需要在對應的環境也安裝docker

總結來看,使用docker可以幫助我們快速的搭建項目依賴環境,但是本地化的docker依賴,依然讓我們的代碼在測試時,不夠純粹,對其各個運行環境,都有有本地docker安裝的要求。

以中心化的docker server改進集成測試

而實際上,docker本身提供了遠程鏈接模式,則使得我們可以中心化的部署docker,然后集成測試代碼以tcp鏈接的方式,使用docker server,進行依賴中間件搭建,測試。

Docker Server遠程鏈接配置

以centos 為例7.6為例,講解如何將一個docker配置成可以遠程鏈接。

/etc/docker/daemon.json中開啟遠程鏈接端口

{"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]}

添加文件/etc/systemd/system/docker.service.d/override.conf,注意上述路徑不存在則手動創建

 [Service]
 ExecStart=
 ExecStart=/usr/bin/dockerd
  • 重載守護進程 systemctl daemon-reload
  • 重啟docker容器systemctl restart docker.service

Testcontainers 框架

在部署好遠程docker后,隨之而來的問題是

  • 如何在代碼中連接和使用遠程docker環境
  • 兩個研發同時跑測試用例時,怎么保證他們各自啟動的container 在端口上不沖突
  • 使用完后的container,怎么清理

幸運的是,Testcontainers框架,幫我們很好的解決了上述問題。

  • 它能于junit 4 ,junit 5集成,幫助我們啟停容器
  • 每一次運行測試,都會啟動全新的容器,暴露不一樣的端口,使得兩個研發同時跑測試用例時,環境互不干擾
  • 它使用testcontainers/ryuk在指定延遲后,清理不再使用的container
  • 上述這一切對使用者都是透明的

Testcontainers 同spring boot集成

更進一步的,游戲公司Playtika提供了Testcontainers 同spring boot整合的測試框架https://github.com/Playtika/testcontainers-spring-boot,使得Spring Boot或Spring cloud生態的應用在編寫集成測試時,更方便

環境變量依賴

使用Testcontainers 或 playtika的testcontainers-spring-boot進行遠程docker鏈接時,都不需要在本地安裝docker客戶端。但需要進行相關環境變量配置,使得代碼可以知道遠程docker的地址。該地址的配置有如下幾種方式

  • 方式1,系統環境變量配置,在當前系統配置環境變量DOCKER_HOST=tcp://remote_docker_server_ip:2375
  • 方式2,直接在java測試代碼中,容器構造前,通過代碼System.setProperty("DOCKER_HOST","tcp://remote_docker_server_ip:2375")指定環境變量
  • 方式3,如果集成測試使用maven failsafe插件,則在插件上配置環境變量

以command line遠程使用和管理docker

上述測試代碼不需要安裝docker 客戶端。但倘若我們需要以命令行的方式,管理docker,則可以安裝一些docker客戶端,來跟遠程docker通信。當然上述的Testcontainers 相當于客戶端的一種。

不同操作系統的客戶端程序安裝方式見: https://gist.github.com/kekru/4e6d49b4290a4eebc7b597c07eaf61f2

參考資料

https://www.testcontainers.org/
https://gist.github.com/styblope/dc55e0ad2a9848f2cc3307d4819d819f
https://github.com/Playtika/testcontainers-spring-boot
https://gist.github.com/kekru/4e6d49b4290a4eebc7b597c07eaf61f2

到此這篇關于使用遠程Docker進行集成測試的文章就介紹到這了,更多相關Docker集成測試內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:泰州 銅川 蕪湖 松原 那曲 朝陽 慶陽 周口

巨人網絡通訊聲明:本文標題《使用遠程Docker進行集成測試的環境搭建過程》,本文關鍵詞  使用,遠程,Docker,進行,集成,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用遠程Docker進行集成測試的環境搭建過程》相關的同類信息!
  • 本頁收集關于使用遠程Docker進行集成測試的環境搭建過程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 91麻豆精品国产自产高清观看| 舔足视频vk| 日韩欧美精品有码在线观看| 好爽受不了了要高潮要喷水了| 34pao强力打造国产女友| 老外欧美性杂交| 美女扒开腿让男人桶尿口| 印度学生xxxxx性14一16| 国产自产精品| 欧美人与??交| 日本无码免费A片无码视频美人J| 护士好紧好爽再搔一点浪一点| 韩国精品欧美一区二区三区| 国产十八禁在线观看十八禁宿舍| 火影忍者?18禁同人游戏| 曰本一区| japanese日本护士xxxx18一19| 史上最淫婚礼| 达达兔午夜福利电影网| 国产女厕盗摄偷窥嘘嘘偷窥| 父母儿女大联欢视频大全| 91成人小视频| 国产精品资源| 91桃色成人网站在线观看| 东北女人一级毛片免费观看| 性色爽爱性色爽爱网站| china同性基友gay勾外卖| 五月丁香欧美综合亚洲AV| 美国情欲满载凯登克劳丝在线| 97色老99久久九九爱精品| 性一交一乱一伦一| 免费高清韩国视频在线观看| 91丨PORNY丨人妻露出| 韩国尤物主播性视频在线播放| 操黄蓉小说| ferx性欧美高清| 新天堂一区二区三区| 菠萝蜜视频网站入口| 好大好紧| 美女被艹的视频| 国产丰满麻豆sexvideos|