通过 Docker Compose 组合 ASP NET Core 和 SQL Server
本文模擬一個比較完整的項目,包括前端(MVC), 后端(WebApi)和數據庫(mssql-server-linux)。通過Docker Compose 定義,組合并執行它們。涉及到 Docker Compose 安裝,命令,docker-compose.yml文件編寫,WebApi 和 MVC 項目編寫,Dockfile編寫等
Docker Compose
簡介
Docker Compose是Docker三劍客之一,用于定義和運行多個Docker容器應用,負責實現對 Docker 容器集群的快速編排。
我們可以通過Dockerfile定義一個單獨的應用容器。然而在日常工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個 Web 項目,除了 Web 服務容器本身,往往還需要再加上后端的數據庫服務容器等。
Compose 恰好滿足了這樣的需求。它允許用戶通過一個單獨的 docker-compose.yml 配置板文件(YAML 格式)來定義一組相關聯的應用容器。然后使用使用單個命令,就可以根據配置中創建并啟動所有服務。
安裝
curl 下載 Docker Compose
替換{{site.compose_version}}為最新的版本號
賦執行權限
測試是否安裝成功
WebApi 項目
創建項目
參考微軟示例Create a Web API?創建一個基于 net core 2.1的WebApi項目,命名為Todo.Api. 參照示例添加 model 和 database context。
在 ConfigureServices 里注冊 database context.
參考微軟示例Work with SQL Server LocalDB?添加 Seed 類并在Program.cs里面添加 seed initializer等。
只需要運行Add-Migration命令生成遷移。無需執行Update-Database命令,因為程序運行起來時候會通過context.Database.Migrate()來執行遷移。
編寫Dockfile
FROM microsoft/dotnet:2.1-aspnetcore-runtimeWORKDIR /appEXPOSE 80/tcpENTRYPOINT ["dotnet", "Todo.Api.dll"]Web MVC 項目
創建項目
創建一個基于 net core 2.1的Web MVC項目,命名為webMVC.
添加 Service 去調用 WebApi 開放的接口。
編寫Dockfile
FROM microsoft/dotnet:2.1-aspnetcore-runtimeWORKDIR /appEXPOSE 80/tcpENTRYPOINT ["dotnet", "WebMVC.dll"]編寫 docker-compose.yml文件
image: 指定鏡像或構建生成鏡像的名字
build:構建生成鏡像。context 指令指定 Dockerfile 所在文件夾的路徑,dockerfile 指令指定 Dockerfile 文件名
environment:設置環境變量
ports:暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER) 格式
volumes:數據卷所掛載路徑設置。可以設置宿主機路徑 (HOST:CONTAINER)
container_name:指定容器名稱。默認將會使用 項目名稱_服務名稱_序號 這樣的格式
depends_on:解決容器的依賴、啟動先后的問題
詳細請參考?Compose file version 3 reference
運行項目
在docker-compose.yml文件通目錄下執行docker-compose build構建項目中的服務容器.
通過?docker-compose up?創建,關聯并啟動服務.
-d 在后臺運行服務容器。
--scale SERVICE=NUM 創建服務的N個實例。
詳細請參考?Compose (docker-compose) CLI reference
源代碼
github
參考
compose gitHub
Quickstart: Compose and ASP.NET Core with SQL Server
Get Started Building Microservices with ASP.NET Core and Docker in Visual Studio Code
Docker Compose 項目
總結
以上是生活随笔為你收集整理的通过 Docker Compose 组合 ASP NET Core 和 SQL Server的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core开发日志——WCF C
- 下一篇: Net Core平台灵活简单的日志记录框