日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

虛擬化云和容器機器的發展,給我們帶來了極大的方便,尤其是開發環境,開發、測試、驗證環境的維護和一致化一直困擾著開發和測試人員,為了配置一個環境往往需要花費大量的精力,而且還無法解決環境一致性問題,由于環境差異導致的Bug問題也讓開發人員和測試耗費大量的精力。如何解決這種問題?那就是利用神器Docker容器了。本文蟲蟲將實例演示如何使用將Docker來輕松地建立一個高效的本地開發環境。

利用Docker容器化開發環境

 

開發環境架構

我們假設開發組使用了下面一個典型的多余系統架構,其中涉及了NodeJS、Python、Golang、數據還有Web前端JS等應用,架構圖如下:

利用Docker容器化開發環境

 

架構組成

構成部分由:

NJS1:NodeJS服務,監聽端口7000,連接數據庫Db1(Psql數據庫,監聽端口5433)。

Py1: Python服務,監聽端口9000,連接數據庫Db1。

Go1: Golang服務,監聽端口5000,連接數據庫Db1。

NJS2: NodeJS服務,監聽端口8000,連接數據庫Db2(Psql數據庫,監聽端口5432)。

Web服務: webpack的開發前端服務器,監聽端口8080。

以上環境可以通過監聽的端口互相通訊和數據交流。

問題分析

管理繁瑣

要管理這些服務,需要打開大量終端窗口,然后單獨運行,雖然可以使用screen和tmux這樣的神器來幫助我們使用多窗口,甚至工作界面的共享等,但是隨著要管理不斷增長,管理會相當繁瑣耗時。

利用Docker容器化開發環境

 

不一致的依賴環境

假設服務依賴于不同開發語言的版本(比如Python 2和Python 3 )。我們就需要在運行服務之前手動切換環境中語言版本,當然可以用多語言版本管理器比如pyenv我們服務業有可能需要多個數據庫服務器,那么在運行服務之前,我們需要確保數據庫服務器運行無誤,并且數據庫連接配置都無誤。還有更多的是開發應用的基礎類庫版本的依賴問題。

基于Docker的開發環境

Docker容器是一種完美的工具,可以輕松地一鍵創建,部署和運行應用程序。通過容器可以將所有需要的環境打包到一個鏡像中,然后通過鏡像一鍵生成開發容器允。

Docker容器

理想的docker容器是一個超輕量級的linux的虛擬機,在它上面運行的應用程序服務。容器中有應用代碼及其所有依賴環境(系統庫,工具等)。我們上面提到的架構,容器化后如下圖所示:

利用Docker容器化開發環境

 

容器管理Docker Compose

Docker Compose是一個用于管理和編排容器定義和運行的多應用程序的工具(類似的流行工具還有谷歌的K8s)。通過Compose,可以使用YAML文件來配置應用程序的服務。然后可以一鍵創建和運行所有的服務。Docker Compose也提供Web UI管理界面和容器監控系統等。。

Docker Compose由一下部分構成

服務:服務是可以用Compose工具運行的各個docker容器列表。通過服務我們來定義各個容器名稱、端口以及其他配置。

網絡:網絡組件提供了服務之間互相連接的通道。各個容器可以將自身附加到網絡,相同網絡內的所有容器可以彼此通信。

:默認情況下,Docker容器不包含任何類型的持久性存儲。如果一個docker容器被關掉,那么其內存中的所有數據都會丟掉。為了持久性保存一些數據,我們需要數據卷來掛載到數據機硬盤上。

利用Docker容器化開發環境

 

實戰配置

docker-compose.yml配置

我們上述典型環境的docker-compose.yml如下:

利用Docker容器化開發環境

 


利用Docker容器化開發環境

 

其中一個服務(njs1)的部分代碼如下:

利用Docker容器化開發環境

 

服務運行

配置好docker-compose.yml后,可以通過下面命令啟動

docker-compose up

如果配置無誤,比如njs1成功啟動后,將顯示:

利用Docker容器化開發環境

 

在瀏覽器通過localhost:7000分文該服務。

常見docker-compose命令

build dockerfile的路徑。注意:可以指定包含Dockerfile的文件夾,也可以指定Dockerfile本身的完整路徑。

command 啟動docker容器時運行的命令。

environment 需要設置的所有環境變量。

ports 指定容器內端口與主機端口的映射關系。

working_dir 這是希望運行上面指定的命令的容器內部的路徑。

啟動所有服務

docker-compose start

該命令會啟動docker-compose文件中的所有服務并以demon方式啟動,在后臺運行。

停止所有服務

docker-compose start

停止所有服務

重啟服務

docker-compose restart njs1

啟動特定服務

docker-compose up njs1

在docker-compose.yml服務列表中只啟動njs1

查看特定服務的日志

docker-compose logs -f njs1

該命令將會在終端打印njs1的日志。

ssh連接到特定容器

docker-compose exec njs1 bash

總結

本文我們利用docker容器的方式來簡化開發環境的架構,解決典型開發環境中管理繁瑣,環境一致性等問題,為了簡潔我們只以Docker Compose為例進行了架構重建。其實基于Docker編排管理系統K8S,結合Gitlab CI/CD功能,可以實現版本管理、測試、安全掃描、驗證、發布等一鍵自動化DevOps架構,以后我們會深入探索。

分享到:
標簽:Docker
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定