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

前面讲到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,自己去看看罗。


<<:  开源自动化攻击模拟平台CALDERA

>>:  许多有趣的变数!如何使用 Postman 尝试 Nutanix 的 API

NNI如何搬到Colab01

NNI搬到Colab上,环境类似本机。虽然,NNI很容易搬到Colab平台上,但由於Colab并不公...

Day 15 讯息伫列的储存、接收及传送

关於讯息伫列怎麽去储存呢?大致分成下列两种: 1.系统池(system pool):如果能确定讯息伫...

Excel VBA 第一篇 -- 基础介面介绍

以下是使用 Excel 2016 示范 环境设定 第一步:开启开发人员 开启Excel後上方工具列呈...

简单建立一个银行系统

创建你的钱包 一样,对比前面的match档,现在新增一个bank的json档案 回到bot档,现在我...

[ Day 4 ] - 阵列基本介绍

阵列的基本介绍 简单来说是存放一组资料集 阵列 会使用 [ ] 前後包住资料集 下面的范例意思是 d...