国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

使用遠程Docker進(jìn)行集成測試的環(huán)境搭建過(guò)程

發(fā)布時(shí)間:2021-08-15 18:37 來(lái)源: 閱讀:0 作者:西北偏北UP 欄目: 服務(wù)器 歡迎投稿:712375056

需求背景

團隊有集成測試的需求,集成測試需要依賴(lài)一些中間件,比如mysql,rabbitmq。每個(gè)研發(fā)人員有對自己開(kāi)發(fā)的那部分代碼進(jìn)行測試編寫(xiě)和運行檢測的需求。

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

使用docker進(jìn)行環(huán)境搭建

而docker,則能很好實(shí)現上述訴求。
但僅僅這樣還不夠,我們還面臨著(zhù)以下一些問(wèn)題

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

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

以中心化的docker server改進(jìn)集成測試

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

Docker Server遠程鏈接配置

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

/etc/docker/daemon.json中開(kāi)啟遠程鏈接端口

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

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

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

Testcontainers 框架

在部署好遠程docker后,隨之而來(lái)的問(wèn)題是

  • 如何在代碼中連接和使用遠程docker環(huán)境
  • 兩個(gè)研發(fā)同時(shí)跑測試用例時(shí),怎么保證他們各自啟動(dòng)的container 在端口上不沖突
  • 使用完后的container,怎么清理

幸運的是,框架,幫我們很好的解決了上述問(wèn)題。

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

Testcontainers 同spring boot集成

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

環(huán)境變量依賴(lài)

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

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

以command line遠程使用和管理docker

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

不同操作系統的客戶(hù)端程序安裝方式見(jiàn):

參考資料




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

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

国产AⅤ激情无码久久男男剧| 西西人体WWW大胆高清| 久久久久久青青无码日韩| 精品久久久久久国产牛牛| 99无码熟妇丰满人妻啪啪| 白嫩少妇HDXXXX性|