要透過Docker將原本的ASP.NET Core網站包成image之前,請先確認你的ASP.NET Core的Program.cs已經設定了 http and/or https 的port宣告:
接著就可以將ASP.NET Core project進行打包了。
此處不介紹 Docker,直接寫出實作步驟,想知道觀念的再去看其他文章囉。
在Windows OS下:
- 先安裝 docker on windows
- 設定成Linux container環境
步驟:
1. 選定需要的base image
2. 寫 Docker file
3. 執行 Docker file
4. 啟動 Docker container
5. 其他 Docker 操作
1. 選定需要的base image
我們要執行一個ASP.NET Core網站,SDK用2.1。
從docker hub (https://hub.docker.com/_/microsoft-dotnet-core) 上選擇要抓下來的base image。
SDK 選:
2. 開始寫 Docker file
在你的ASP.NET Core project的第一層目錄下(與*.sln同一層)建立"Dockerfile",內容如下:
- 其中"MgvInfoSpServer"請換成你的project名。
- 其中"COPY MgvInfoSpServer/MgvInfoSpServer.pfx ./" 是把https的憑證複製到image裡,若你網站有開https,請在此先把憑證放到你的project目錄下(與*.csproj同一層)。
3. 執行 Docker file
- 開啟Windows的PowerShell
- 建立docker image
4. 啟動 Docker container
- 檢查image是否已產生
http://localhost:8000/
https://localhost:8001/
5. 其他 Docker 操作
查看目前正在運行的container
- docker ps
刪除目前正在運行的container
- docker rm -f [id]
背景執行docker
- command加一個 -d
查看log
- docker logs [container ID]
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
options.Listen(IPAddress.Any, 80);
options.Listen(IPAddress.Any, 443, listenOptions =>
{
listenOptions.UseHttps("MgvInfoSpServer.pfx", "1234");
});
})
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseApplicationInsights()
.Build();
}
* 請將 options.Listen() 中的 IP address 設成 IPAddress.Any接著就可以將ASP.NET Core project進行打包了。
此處不介紹 Docker,直接寫出實作步驟,想知道觀念的再去看其他文章囉。
在Windows OS下:
- 先安裝 docker on windows
- 設定成Linux container環境
步驟:
1. 選定需要的base image
2. 寫 Docker file
3. 執行 Docker file
4. 啟動 Docker container
5. 其他 Docker 操作
1. 選定需要的base image
我們要執行一個ASP.NET Core網站,SDK用2.1。
從docker hub (https://hub.docker.com/_/microsoft-dotnet-core) 上選擇要抓下來的base image。
SDK 選:
mcr.microsoft.com/dotnet/core/sdk:2.1
Run-time base image 選:mcr.microsoft.com/dotnet/core/aspnet:2.1
2. 開始寫 Docker file
在你的ASP.NET Core project的第一層目錄下(與*.sln同一層)建立"Dockerfile",內容如下:
# coding=UTF-8
# https://hub.docker.com/_/microsoft-dotnet-core
FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
WORKDIR /source
# copy csproj and restore as distinct layers
COPY *.sln .
COPY MgvInfoSpServer/*.csproj ./MgvInfoSpServer/
RUN dotnet restore
# copy everything else and build app
COPY MgvInfoSpServer/. ./MgvInfoSpServer/
WORKDIR /source/MgvInfoSpServer
RUN dotnet publish -c release -o /app --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.1
WORKDIR /app
COPY MgvInfoSpServer/MgvInfoSpServer.pfx ./
COPY --from=build /app ./
ENTRYPOINT ["dotnet", "MgvInfoSpServer.dll"]
- 其中"MgvInfoSpServer"請換成你的project名。
- 其中"COPY MgvInfoSpServer/MgvInfoSpServer.pfx ./" 是把https的憑證複製到image裡,若你網站有開https,請在此先把憑證放到你的project目錄下(與*.csproj同一層)。
3. 執行 Docker file
- 開啟Windows的PowerShell
- 建立docker image
docker build -t mgvinfospserver:carrefour .
4. 啟動 Docker container
- 檢查image是否已產生
docker images
- 啟動 Docker containerdocker run --rm -p 8000:80 -p 8001:443 mgvinfospserver:carrefour
開啟瀏覽器http://localhost:8000/
https://localhost:8001/
5. 其他 Docker 操作
查看目前正在運行的container
- docker ps
刪除目前正在運行的container
- docker rm -f [id]
背景執行docker
- command加一個 -d
查看log
- docker logs [container ID]
留言
張貼留言