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

需求背景

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了湘西土家族免費(fèi)建站歡迎大家使用!

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

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

使用docker進(jìn)行環(huán)境搭建
而docker,則能很好實(shí)現(xiàn)上述訴求。

但僅僅這樣還不夠,我們還面臨著以下一些問(wèn)題

本地環(huán)境搭建的繁瑣。每個(gè)研發(fā),都要在本地安裝docker環(huán)境,這會(huì)導(dǎo)致在使用上的一些門(mén)檻和不便,以我司為例,由于有嚴(yán)格的網(wǎng)絡(luò)管控,我們都是內(nèi)網(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)境安裝調(diào)試過(guò)程,實(shí)屬繁瑣 測(cè)試運(yùn)行速度無(wú)法保證。當(dāng)一個(gè)項(xiàng)目依賴中間件較多時(shí),基于本地的docker也會(huì)占用大量的資源影響測(cè)試速度 多環(huán)境集成測(cè)試麻煩。由于集成測(cè)試依賴本地docker,那么這份代碼在不同的環(huán)境,比如在Jenkins上打包運(yùn)行時(shí),需要在對(duì)應(yīng)的環(huán)境也安裝docker

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

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

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

Docker Server遠(yuǎn)程鏈接配置

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

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

{"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 重載守護(hù)進(jìn)程 systemctl daemon-reload 重啟docker容器systemctl restart docker.serviceTestcontainers 框架

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

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

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

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

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

環(huán)境變量依賴

使用Testcontainers 或 playtika的testcontainers-spring-boot進(jìn)行遠(yuǎn)程docker鏈接時(shí),都不需要在本地安裝docker客戶端。但需要進(jìn)行相關(guān)環(huán)境變量配置,使得代碼可以知道遠(yuǎn)程docker的地址。該地址的配置有如下幾種方式
方式1,系統(tǒng)環(huán)境變量配置,在當(dāng)前系統(tǒng)配置環(huán)境變量DOCKER_HOST=tcp://remote_docker_server_ip:2375 方式2,直接在java測(cè)試代碼中,容器構(gòu)造前,通過(guò)代碼System.setProperty("DOCKER_HOST","tcp://remote_docker_server_ip:2375")指定環(huán)境變量 方式3,如果集成測(cè)試使用maven failsafe插件,則在插件上配置環(huán)境變量

以command line遠(yuǎn)程使用和管理docker

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

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




參考資料

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

當(dāng)前標(biāo)題:使用遠(yuǎn)程Docker進(jìn)行集成測(cè)試的環(huán)境搭建過(guò)程
鏈接地址:http://www.muchs.cn/article20/epehco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、定制開(kāi)發(fā)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化