欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年07月04日 14:45:53   作者:西北偏北UP  
使用docker可以幫助我們快速的搭建項目依賴環(huán)境,但是本地化的docker依賴,依然讓我們的代碼在測試時,不夠純粹,對其各個運行環(huán)境,都有本地docker安裝的要求

需求背景

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

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

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

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

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

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

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

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

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

以centos 為例7.6為例,講解如何將一個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,注意上述路徑不存在則手動創(chuàng)建

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

Testcontainers 框架

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

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

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

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

Testcontainers 同spring boot集成

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

環(huán)境變量依賴

使用Testcontainers 或 playtika的testcontainers-spring-boot進行遠(yuǎn)程docker鏈接時,都不需要在本地安裝docker客戶端。但需要進行相關(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測試代碼中,容器構(gòu)造前,通過代碼System.setProperty("DOCKER_HOST","tcp://remote_docker_server_ip:2375")指定環(huán)境變量
  • 方式3,如果集成測試使用maven failsafe插件,則在插件上配置環(huán)境變量

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

上述測試代碼不需要安裝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進行集成測試的文章就介紹到這了,更多相關(guān)Docker集成測試內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用docker部署springboot項目到服務(wù)器的詳細(xì)過程

    使用docker部署springboot項目到服務(wù)器的詳細(xì)過程

    這篇文章主要介紹了docker部署springboot項目到服務(wù)器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Docker 限制容器可用的CPU的方式

    Docker 限制容器可用的CPU的方式

    這篇文章主要介紹了Docker 限制容器可用的CPU的方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 查看docker中運行的JVM參數(shù)問題及解決方法

    查看docker中運行的JVM參數(shù)問題及解決方法

    這篇文章主要介紹了查看docker中運行的JVM參數(shù),方法一使用的是jcmd命令,方法二是jinfo命令,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2022-04-04
  • docker-cli源碼窺探(推薦)

    docker-cli源碼窺探(推薦)

    最近一直在使用docker,在這做下記錄,本文我將以docker?ps?-a?命令為例探究docker命令在?client側(cè)的執(zhí)行過程,源碼的版本為20.10,對docker-cli源碼知識感興趣的朋友一起學(xué)習(xí)下吧
    2022-11-11
  • Docker創(chuàng)建鏡像、怎么修改、上傳鏡像等詳細(xì)介紹

    Docker創(chuàng)建鏡像、怎么修改、上傳鏡像等詳細(xì)介紹

    這篇文章主要介紹了Docker創(chuàng)建鏡像、怎么修改、上傳鏡像等詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Docker報錯Operation?not?permitted問題的解決方法

    Docker報錯Operation?not?permitted問題的解決方法

    剛開始接觸Docker的朋友經(jīng)常會遇到問題,下面這篇文章主要給大家介紹了關(guān)于Docker報錯Operation?not?permitted問題的解決方法,需要的朋友可以參考下
    2023-02-02
  • docker容器資源配額控制詳解

    docker容器資源配額控制詳解

    本篇文章主要介紹了docker容器資源配額控制詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 詳解修改docker啟動默認(rèn)網(wǎng)橋docker0為自定義網(wǎng)橋

    詳解修改docker啟動默認(rèn)網(wǎng)橋docker0為自定義網(wǎng)橋

    本篇文章主要介紹了詳解修改docker啟動默認(rèn)網(wǎng)橋docker0為自定義網(wǎng)橋 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • docker部署ES集群的實現(xiàn)

    docker部署ES集群的實現(xiàn)

    本文介紹了如何在Ubuntu20.04.2 LTS環(huán)境下通過Docker部署Elasticsearch7.10.1集群,詳細(xì)步驟包括從Docker鏡像倉庫拉取Elasticsearch鏡像,創(chuàng)建文件映射目錄,運行Docker容器,配置Elasticsearch的端口和權(quán)限,以及集群的相關(guān)設(shè)置,感興趣的可以了解一下
    2024-10-10
  • docker-compose如何安裝skywalking

    docker-compose如何安裝skywalking

    這篇文章主要介紹了docker-compose如何安裝skywalking問題,
    2024-01-01

最新評論