iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 30
0
自我挑戰組

Re : 從懶開始的自動化生活系列 第 30

[D30] : 一個Queue+Docker在Local的實作(4/4)

  • 分享至 

  • xImage
  •  

前面講到Passer -> MQ <- Center 通了
今天就來把他們給包一包容器化和收工結尾

Docker File

Docer file是用來描述起一個Container要包含哪些內容物,通常會先起一個Image然後開始對它加工,有時候我們會用到多個Image,但最終Container只會保留最後的那一個Image,以及定義Container啟動的通關密語(Entrypoint)。

寫Docer file之前我們得先釐清一個Web service container被Host起來需要哪些條件:

  1. 有可以編譯它框架的套件
  2. 有它具備的依賴套件
  3. 要Publish
  4. 有它可以跑的環境
  5. Container起來時他自己知道該做什麼事

為此我們要做幾件事請參照下圖並對照左側行數:
Line 1 : 我們載了SDK Image。(這邊AS Build很重要,Line 17會用到,這技巧稱作multistage。)
Line 2 : cd並建立一個app資料夾作為服務進入點
Line 5 : 我們我們把專案描述依賴套件的文檔放入app資料夾
Line 6 : 執行resotre下載他的依賴套件並且編譯
一、二點完成
Line 9 : 我們把其他專案的相關檔案也都搬運到app底下
Line 10 : 我們把專案Publish出一個Release版本,放到out資料夾,這out資料夾會在app底下。
第三點完成
Line 13 : 下載dotnet core runtime Image為了能把服務host起來。
第四點完成
Line 15 : cd並建立一個app資料夾
Line 17 : 把前面build的publish成果(Line 10 存在out資料夾),搬運到這邊的app資料夾底下。
第三點真的完成了
Line 19 : 每個Container要被驅動的方法唯有透過Entrypoint,我們在這裡設定指令,代表當它被包成Container時會執行"dotnet passer.dll"執行這項服務。
第五點完成

Center同理唷不解釋。

這時一定有人問說啊RabbitMQ勒?這我們交由Compose來實作。


Compose

Compose 是當你專案多,彼此又有相依,一個個專案下指令去Host是很累也很耗費成本的事。Compose就是再寫一份腳本來幫你搞定這些事。

這邊我們寫了一份docker-compose.yml
Line 1 : 注名用的是哪一個版本的compose技術
Line 3 : 告訴Docker接下來的內容物都是要起的Service給老子聽清楚(誤
Line 5 : 起一個center 注意不得有空格與大寫
Line 6 : 他會always auto restart.
Line 7 : 他會等rabbitmq service起來之後才會起來

Line 11 ~ Line 16 一樣邏輯

Line 18 : 起一個rabbitmq
Line 19 : 我們直接上docker hub拉image
Line 20 : hostname要跟你專案的hostname對到,前面介紹都用Localhost可以喬一下看想怎樣。
Line 22 : 我忘記這啥了
Line 23 : 開一堆Port。


整個跑起來

記得先停掉掉你本地的rabbitmq不然port號會搶到。

到Compose file那層執行:

docker-compose up --build

Ps. 我忘記截rabbitmq後台此時的圖了,反正會跟前面的一樣能work,自己去看看囉。


上一篇
[D29] : 一個Queue+Docker在Local的實作(3/4)
系列文
Re : 從懶開始的自動化生活30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言