利用Docker來包裝Dotnet Core的Console程式

目的

寫這篇的文章主要用來教學以及測試一下docker for windows是不是能用 (,,・ω・,,) 內容會很簡單如果會了就不需要看
為什麼要用image來包裝程式呢? 主要是想跨平台不用再重新設定環境,並且立刻就可以用了,我自己的情境大多是有些Linux shell或是command沒辦法在windows執行這時候用docker build成image後再來使用是很方便的一件事。

環境

  1. 首先我的範例是在windows 10 pro (version 1709)開發的
  2. dotnet core runtimme 2.0.5跟dotnet core sdk 2.1.4的環境
Docker的版本是docker for windows 17.12.0-ce-win47

目錄

程式

1. 使用dotnet的指令來建立基本的console程式

$ dotnet new console -n app
並且將Program.cs內容改成以下


2. 建立Dockerfile

這邊要注意的是不需要用設定ENTRYPOINT,主要就只是將build好的執行檔放進image就好
P.S. Docker的新功能Multi-stage builds還真方便,不用像以前要寫好多個Dockerfile

詳細內容請參考以下網址

建立Image

不知道為什麼windows的images都異常的肥大就像是過年吃了好幾天的大餐然後都不去減肥一樣。不知道microsoft什麼時候才可以將image減肥一下 ಠ_ಠ
有點離題了當你執行了ocker build之後,你就會看到你的Repository裡面就有剛剛建立的image
$ docker build -t carter/app:latest .
$ docker images

執行

最後在Powershell執行Command
$ docker run -it carter/app:latest dotnet app.dll 123
就能看到剛剛寫的小程式可以執行了
(ノ>ω<)ノ
最後如果每次都要打這麼多一定會受不了,我們可以用別名(Alias)來讓指令更簡單。但是在windows要寫太多….有點懶不想寫 XDD 可以參考一下別人的寫法
https://gist.github.com/pythoninthegrass/62ab08e13ed9ae264f4816ee5fc85aec

同步更新於:https://medium.com/@CarterTsai/利用docker來包裝dotnet-core的console程式-bc322d9e4eb9

張貼留言

這個網誌中的熱門文章

Unions 在C語言的簡單介紹

解釋scope.$apply用來做什麼? -- AngularJS

JavaScript的Timer用法