團(tuán)隊(duì)有集成測(cè)試的需求,集成測(cè)試需要依賴一些中間件,比如mysql,rabbitmq。每個(gè)研發(fā)人員有對(duì)自己開發(fā)的那部分代碼進(jìn)行測(cè)試編寫和運(yùn)行檢測(cè)的需求。
為了不互相影響,可以選擇在研發(fā)本地搭建自己的依賴環(huán)境,我們希望這些環(huán)境搭建要容易、快速,且方便清理。
而docker,則能很好實(shí)現(xiàn)上述訴求。
但僅僅這樣還不夠,我們還面臨著以下一些問題
總結(jié)來看,使用docker可以幫助我們快速的搭建項(xiàng)目依賴環(huán)境,但是本地化的docker依賴,依然讓我們的代碼在測(cè)試時(shí),不夠純粹,對(duì)其各個(gè)運(yùn)行環(huán)境,都有有本地docker安裝的要求。
而實(shí)際上,docker本身提供了遠(yuǎn)程鏈接模式,則使得我們可以中心化的部署docker,然后集成測(cè)試代碼以tcp鏈接的方式,使用docker server,進(jìn)行依賴中間件搭建,測(cè)試。
以centos 為例7.6為例,講解如何將一個(gè)docker配置成可以遠(yuǎn)程鏈接。
在/etc/docker/daemon.json
中開啟遠(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
systemctl daemon-reload
systemctl restart docker.service
在部署好遠(yuǎn)程docker后,隨之而來的問題是
幸運(yùn)的是,Testcontainers框架,幫我們很好的解決了上述問題。
更進(jìn)一步的,游戲公司Playtika提供了Testcontainers 同spring boot整合的測(cè)試框架https://github.com/Playtika/testcontainers-spring-boot
,使得Spring Boot或Spring cloud生態(tài)的應(yīng)用在編寫集成測(cè)試時(shí),更方便
使用Testcontainers 或 playtika的testcontainers-spring-boot進(jìn)行遠(yuǎn)程docker鏈接時(shí),都不需要在本地安裝docker客戶端。但需要進(jìn)行相關(guān)環(huán)境變量配置,使得代碼可以知道遠(yuǎn)程docker的地址。該地址的配置有如下幾種方式
DOCKER_HOST=tcp://remote_docker_server_ip:2375
System.setProperty("DOCKER_HOST","tcp://remote_docker_server_ip:2375")
指定環(huán)境變量上述測(cè)試代碼不需要安裝docker 客戶端。但倘若我們需要以命令行的方式,管理docker,則可以安裝一些docker客戶端,來跟遠(yuǎn)程docker通信。當(dāng)然上述的Testcontainers 相當(dāng)于客戶端的一種。
不同操作系統(tǒng)的客戶端程序安裝方式見: 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
到此這篇關(guān)于使用遠(yuǎn)程Docker進(jìn)行集成測(cè)試的文章就介紹到這了,更多相關(guān)Docker集成測(cè)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:泰州 銅川 蕪湖 松原 那曲 朝陽 慶陽 周口
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用遠(yuǎn)程Docker進(jìn)行集成測(cè)試的環(huán)境搭建過程》,本文關(guān)鍵詞 使用,遠(yuǎn)程,Docker,進(jìn)行,集成,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。