1. 程式人生 > >ASP.NET Core 2.1 使用Docker執行

ASP.NET Core 2.1 使用Docker執行

1.新建一個 ASP.NET Core 2.1 專案

1529417901378

然後執行一下專案,確保我們剛剛建立的專案可以正常執行。

1529418199419

2.編寫 Dockerfile

新建一個文字檔案,命名為 Dockerfile

FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY . .
EXPOSE 80
ENTRYPOINT ["dotnet", "AspNetCore.Docker.dll"]

這裡我們需要用到官方的映象:microsoft/dotnet:2.1-aspnetcore-runtime

如果要嘗試更小的映象,可以試試 microsoft/dotnet:2.1-aspnetcore-runtime-alpine

,這映象使用了alpine 一款精簡版極小的linux,但是隨之而來的就是閹割了一些功能,實際使用的時候需要測試,比如國際化支援,它預設在這個映象裡面沒有開啟,需要配置環境變數來開啟。

需要設定Dockerfile的如下屬性,保證其能複製到釋出目錄:

1529423322744

3.構建Docker映象

我們將映象命名為 :aspnetcoredocker

進入到釋出檔案目錄,執行命令便可打包映象:

docker build -t aspnetcoredocker .

我們可以編寫 釋出+構建 的指令碼。

Windows:

檔名:build.bat

@echo off

echo "Windows Docker build"

cd ../AspNetCore.Docker

dotnet publish -c Release -o ../publish

cd ../publish

echo "publish success"

docker build -t aspnetcoredocker .

檔名:Linux:

build.sh

#!/bin/bash

echo Linux Docker build

cd ../AspNetCore.Docker

dotnet publish -c Release -o ../publish

cd ../publish

echo publish success

docker build -t aspnetcoredocker .

資料夾結構如下圖:

1529424418158

執行構建:

./build.sh

1529424671621

構建成功後可以通過 docker images 命令查詢到我們構建的映象:

1529424760009

若在linux下執行sh指令碼時,遇到錯誤“-bash: ./build.sh: /bin/bash^M: bad interpreter: No such file or directory“,請通過vim/vi編輯sh指令碼,按:建,輸入 set ff=unix

,然後回車、wq儲存即可

4.執行映象

通過命令執行

docker run --name=aspnetcoredocker -p 7777:80 -d  aspnetcoredocker

--name:指定容器名稱

-p:指定容器埠

-d:指定容器 後臺執行

出現一長串字串,便是表示執行成功:

1529425263500

我們也可以通過 docker ps 命令,查詢我們正在執行的容器:

1529425315363

我們還可以通過 docker logs 來檢視啟動日誌:

1529425348621

5.驗證訪問

我們可以通過 curl命令來直接訪問我們容器啟動的asp.net core 網站:

1529425443476

或者直接通過瀏覽器訪問:

1529425517018

至此,我們通過Docker執行asp.net core 2.1應用程式就結束了。

6.資料

本文所用程式碼:https://github.com/stulzq/BlogDemos/tree/master/AspNetCore.Docker

相關推薦

ASP.NET Core 2.1 使用Docker執行

1.新建一個 ASP.NET Core 2.1 專案 然後執行一下專案,確保我們剛剛建立的專案可以正常執行。 2.編寫 Dockerfile 新建一個文字檔案,命名為 Dockerfile FROM microsoft/dotnet:2.1-aspnetcore-runtime WORKDIR /app

asp.net core 2.1 DBfirst MySQL 執行命令出錯

Scaffold-DbContext "Data Source=localhost;Initial Catalog=FriendSourceDB;User ID=root;Password=;" Pomelo.EntityFrameworkCore.MySql -OutputDir EFModel

ASP.NET Core 2.1 建立規範的 REST API -- HATEOAS

enume edi count DC tutorial 不知道 客戶 自適應 獨立 本文所需的一些預備知識可以看這裏: http://www.cnblogs.com/cgzl/p/9010978.html 和 http://www.cnblogs.com/cgzl/p/90

學習 ASP.NET Core 2.1:集成測試中使用 WebApplicationFactory

UNC enc sta 測試 修改 構造 creat -a msdn WebApplicationFactory 是 ASP.NET Core 2.1 新特性 MVC functional test infrastructure 中帶來的新東東,它封裝了 TestServe

asp.net core 2.1 將控制器抽離到類庫中

cat start service public 網站 類庫 class all app startup.cs的ConfigureServices中添加: public void ConfigureServices(IServiceCollection

ASP.NET Core 2.0 項目升級至 ASP.NET Core 2.1.3X

微信公眾號 code ima microsoft 訪問 nload 操作 更新 解決辦法 在上一篇文章ASP.Net Core 運行錯誤 Http Error 502.5 解決辦法的最後有提到說,最推薦的升級辦法是從2.0升級到2.1X版本. 操作如下 項目的例子直接使用h

再談使用X.PagedList.Mvc 分頁(ASP.NET Core 2.1

asp ram 默認 mvc 文本 它的 otn package www. 在以前的博文中寫過使用X.PagedList.Mvc組件來對ASP.NET MVC應用程序進行分頁,可以參考此篇隨筆:Asp.net MVC 使用PagedList(新的已更名 為X.PagedLi

ASP.NET core 2.1部署到 Centos 7

-m lrzsz arc -perm 安裝asp.net local ESS port pub 步驟要點: 一、關閉Linuxselinux: 操作方式: 1.永久關閉:打開/etc/selinux/config文件,設置SELINUX=disabled,註意,不是S

Asp.net Core 2.1使用 EF Core 簡單增刪改查操作數據庫

generic nuget ini gen 項目 pub sass .net 增刪改查 Asp.net Core 2.1使用 EF Core 簡單增刪改查操作數據庫 大概步驟如下5步: 1、創建項目(Asp.net Core 2.1項目) 2、項目使用EF Core 3、建

獨立部署asp.net core 2.1 Web應用程式

1.建立asp.net core 2.0  Web應用程式 新增引用: Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Sqlite.Design 2.配置Sqlite資料庫 修改Startup.cs檔案

獨立部署asp.net core 2.1 Web應用程序

ring tar sign options \n rgs migration 局域網 引用 1.創建asp.net core 2.0 Web應用程序 添加引用: Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFr

從零開始學習 asp.net core 2.1 web api 後端api基礎框架(七)-新增一個查詢單筆資料的方法

再寫一個查詢單筆資料的方法: [Route("{id}")] public JsonResult GetProduct(int id) { return new JsonResult(ProductService.Curre

從零開始學習 asp.net core 2.1 web api 後端api基礎框架(六)-把獲取資料的程式碼整理成一個服務

建立一個Services目錄, 然後建立一個 ProductService.cs類 我們把獲取資料的程式碼整理成一個ProductService, 然後保證程式執行的時候, 操作的是同一批資料: namespace CoreBackend.Api.Services { public

從零開始學習 asp.net core 2.1 web api 後端api基礎框架(五)-Routing 路由

路由有兩種方式: Convention-based (按約定), attribute-based(基於路由屬性配置的).  其中convention-based (基於約定的) 主要用於MVC (返回View或者Razor Page那種的). Web api 推薦使用attribute

Asp.net Core 2.1 Kestrel 現在支援 多協議處理(Tcp)

地址:https://github.com/davidfowl/MultiProtocolAspNetCore.git 在一個Kestrel服務上可以同時處理Tcp,Http,Https等多種協議。 通過實現 ConnectionHandler 處理接入連線,ConnectionContext.Trans

asp.net core 2.1 dotnet(五)EF.core Dbfirst 生成 檢視與呼叫儲存過程

1 檢視,可以直接在 Model中寫 檢視的模型 執行方式如找到一個,還沒有試過:     有關 .net core EF 的問題有一個地址: https://github.com/aspnet/EntityFra

ASP.NET Core 2.1 : 十四.靜態檔案與訪問授權、防盜鏈

ASP.NET Core 2.1 : 十四.靜態檔案與訪問授權、防盜鏈 我的網站的圖片不想被公開瀏覽、下載、盜鏈怎麼辦?本文主要通過解讀一下ASP.NET Core對於靜態檔案的處理方式的相關原始碼,來看一下為什麼是wwwroot資料夾,如何修改或新增一個靜態資料夾,為什麼新增的資料夾名字不會被

【netcore基礎】ubuntu 16.04 搭建.net core 2.1 linux 執行環境 nginx反向代理 supervisor配置自啟動 【.NetCore學習】ubuntu16.04 搭建.net core mvc api 執行環境 .Net Core 部署到Ubuntu 16.0

今天來整理下netcore在linux(ubuntu)上的執行環境搭建   對應版本 ubuntu 16.04 .net core 2.1 nginx version: nginx/1.10.3 (Ubuntu) supervisor Supervisorhttp://super

ASP.NET Core 2.1 開發跨平臺應用教程

ASP.NET Core 的開發跨平臺應用教程,你想要的都在這裡了。 教程雲盤下載:https://pan.baidu.com/s/1FzbYzIDhgBnCXVyvVd8K8A 概述 入門 教程 Web 應用 Razor 頁

Angular6 + asp net core 2.1 web api 部署到 iis 伺服器

先建立的web api 專案,根據這位大佬的 基本上都是按照這位大佬的來的,然後建立angular 也是單獨專案 但當我部署的時候 我是 在 web api 根專案中建立了 Angular 專案,然後把 Client-App 專案中的東西都替換了 主要的地方