「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[Visual Studio]] --[[Docker for Windows]] --[[Hyper-V コンテナ]] --[[ASP.NET Core]] ---[[ASP.NET Coreの開発]] ---[[ASP.NET Coreのデプロイ]] * 目次 [#i04718e7] #contents *概要 [#z33068ce] -[[Hyper-V コンテナ]](若しくはMicrosoft Azure Containers)~ '+ [[Docker for Windows]]を使用して、[[ASP.NET Core]]のLinuxコンテナ上でのデバッグ実行が可能。 -Linux上での[[ASP.NET Coreの開発]]や[[ASP.NET Coreのデプロイ]]を考えていてココに行き着いた。 -運用環境へのデプロイについては、専任のエンジニアに相談する必要があるものと思われれる。 *手順1 [#ed1a49b7] 以下の手順で検証・評価した。 **環境 [#f9c27a4b] -Win 10 Pro -Hyper-Vの有効化 -.NET Core 2.0 -VS 2017 Community **プロジェクトの作成 [#m5187e0f] [[ASP.NET Core MVC]]アプリケーションの作成 -[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]サポートなし -認証なし **プロジェクトの設定 [#tf9569f1] -プロジェクトを作成した後にプロジェクトを右クリックして[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]サポートを追加 #ref(1.png,left,nowrap,手順1,60%) -[[Hyper-V コンテナ]]上で動作するOS(Windows or Linux)を選択(ここではLinuxを選択)。 #ref(2.png,left,nowrap,手順2,60%) **インストレーション [#d15a687c] -[[Docker for Windows]]のインストール(ダウンロードに少々時間がかかる) #ref(3.png,left,nowrap,手順3,60%) -[[Docker for Windows]]のインストール・ウィザード~ ([[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]] ≒ Linuxコンテナなので下のCheck Boxは外しておく) #ref(4.png,left,nowrap,手順4,60%) -[[Docker for Windows]]のインストール完了 #ref(5.png,left,nowrap,手順5,60%) **デバッグ実行の準備 [#n341b221] -デバッグのドロップダウン・リストから[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]を選択した状態でデバッグ実行しようとすると、以下のエラー・メッセージが表示されるが、~ [[Docker CE for Windows(Docker Community Edition for Windows)>Docker for Windows]]はインストール済みであるので、PCの再起動を行ってみる。 #ref(6.png,left,nowrap,手順6,60%) -再起動後、[[Hyper-V]]上にLinux VMを確認できる(MobyLinuxVM)。 #ref(7.png,left,nowrap,手順7) -再度デバッグ実行を行うと、以下のエラー・メッセージが表示される。 #ref(8.png,left,nowrap,手順8,60%) -エラー・メッセージが以下のように変更される([[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]が実行されていないとのこと)。 #ref(9.png,left,nowrap,手順9,60%) -暫く経つと、以下のダイアログが表示された。~ OKを押下して再起動する(再起動に少々時間がかかる)。 #ref(10.png,left,nowrap,手順10,60%) -再起動を行うと、以下のダイアログボックスが表示される~ (なお、ココでサインアップ・サインインはしなくてもイイ)。 #ref(11.png,left,nowrap,手順11,60%) -この時点で、以下のdockerコマンドをcmdから実行すると、~ dockerコマンドが適切に実行され結果が返り、[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]](のクライアント)が実行されていることを確認する。 > docker version > docker run hello-world -デバッグ実行を開始すると、以下のcmdが起動し「何か」がダウンロードされ、 #ref(12.png,left,nowrap,手順12,60%) >※ 後々、「from microsoft/aspnetcore」でググって、~ コンパイル済みのASP.NET Coreアプリケーションを実行するための~ 公式のDocker Imageをダウンロードしていたことが解った。~ https://hub.docker.com/r/microsoft/aspnetcore/ -次いで、以下のエラー・メッセージが表示されるので、 #ref(13.png,left,nowrap,手順13,60%) -メッセージ通り、[[Docker for Windows]]の設定で、ボリューム共有を有効にする。~ [[Docker for Windows]]の画面はタスクトレイ (Task tray) から起動する。 #ref(14.png,left,nowrap,手順14,60%) -管理者アカウントのCredentialの入力を求められるので入力を行う。 -設定完了後、再度デバッグ実行を行うと、以下のダイアログが表示されるので、~ [アクセスを許可する]ボタンを押下し、VPNKitと言う組込みVPNツールのリスニング・ポートを開放する。 #ref(15.png,left,nowrap,手順15,60%) -これにより、アプリケーションが[[Hyper-V コンテナ]]内の[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]](Linuxコンテナ)で起動し、デバッグが開始される。 **ブレークポイントを設定してデバッグ実行する。 [#vf5605d5] ***設定の確認 [#j40599c4] -ここまでの手順で、ソリューションに「docker-compose」が追加されているのを確認する。 -この「docker-compose」が、スタートアップ・プロジェクトに設定されていることを確認する。 ***デバッグ実行 [#u6c27f49] -デバッグ実行を開始する(ドロップダウン・リストに「Docker」が選択されていることを確認する)。 -ブレークポイントを設定して実行すると、~ 以下のように、適切にデバッグ実行されていることを確認できる。 #ref(16.png,left,nowrap,手順16,60%) -本当にLinux上で動いているか心配なので、念のため、以下で確認する。 #ref(17.png,left,nowrap,手順17,60%) ***余談:PDBのタイプ [#o8d9c85e] [[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]側でライブラリのデバッグをする場合、ライブラリのPDBが、~ 「完全(full)」ではなくて、「ポータブル(portable)」である必要がある。 *手順2 [#b6ded901] -より実践的な開発環境を構成する。 --Webサーバ:[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]側の[[Kestrel>ASP.NET CoreのWebサーバ#c9a915ba]]で動作する。 --DB:ホスト側のDBで動作させたい。 -後者のDBへのアクセスが可能かどうかDBMSアプリケーションを使用して確認する。~ (DBMSアプリケーションとしては、[[ASP.NET Core]]対応されたOpen棟梁テンプレートを使用する。) **設定ファイル読み込み方法の変更 [#ba0a8f8a] -早速エラーが発生。DBアクセス以前に設定ファイルへのアクセスができない。 #ref(18.png,left,nowrap,手順18,60%) -以下のように調査すると、プロジェクト内のファイルがカレント・ディレクトリ(/app)にデプロイされることが解る。 #ref(19.png,left,nowrap,手順19,60%) -従って、 --プロジェクト内にファイルを配置し、~ (「リンクとして追加」の設定はNG、「出力ディレクトリにコピー」の設定は不要)~ これを読み取る方向性で対応するか、 --旧Azure PaaS時と同様に、埋め込まれたリソースで対応できる。~ 設定の仕方は、以下の「Azure Web Apps」で動作させる方法が参考になる。 ---Open 棟梁の使い方(実践編)第6回 - OSSコンソーシアム~ https://www.osscons.jp/joywo3d7c-537/#_537 **SQL Serverへの接続 [#c4bc07f4] ホスト側のDBで動作させようとしたが、ハマりどころが多かったのでメモ。 ***接続文字列 [#ra8d82e2] -ホストのIPアドレスは、10.0.75.1になる。 -Windows認証ではなく、SQL Server認証の接続文字列を使用する。 ***Windows ファイアウォール [#ife7d378] -必要時応じて設定する。 -OFFにして通ったら絞るのがイイ。 ***SQL Server 構成マネージャー [#x62264bc] Expressの場合は、SQL Server 構成マネージャーの設定も必要にある。 ***参考 [#u033342c] -[[つながらない! - SQL Server Express>つながらない!#d663cac3]] -networking - How to connect to docker host from container on Windows 10 (Docker for Windows) - Stack Overflow~ https://stackoverflow.com/questions/40746453/how-to-connect-to-docker-host-from-container-on-windows-10-docker-for-windows?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa **変更点のスクショ [#qf813bc4] 以下は、[[ASP.NET Core MVC]]のOpen棟梁テンプレートの変更点のスクショです。~ (設定ファイル読み込み方法に「埋め込まれたリソース」を採用した場合) #ref(20.png,left,nowrap,手順20,60%) *手順3 [#kecabd32] -概要 --Webサーバを、[[Kestrel>ASP.NET CoreのWebサーバ#c9a915ba]]から[[nginx>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?nginx]]プロキシ経由に変更する。 --Docker Hubから、[[ASP.NET Core]] + [[nginx>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?nginx]]の~ イメージ・ファイルを取得する(「nginx:latest」と「aspnetcore:latest」)。 --上記の2つのコンテナを作成を・管理する場合、docker-composeを利用する。 -構成 --ホスト(VPNKit?の8888)-> [[nginx-proxy>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?nginx]]コンテナ(nginxの80) ->[[ASP.NET Core]]コンテナ( [[Kestrel>ASP.NET CoreのWebサーバ#c9a915ba]]の5000)とブリッジする。 --各コンテナは、それぞれ独立したIPアドレスを持っており、[[dockerコマンド>#pba54619]]で調べることができる。 **初期設定 [#y5817faa] [[手順1>#ed1a49b7]]と同じ。 **コンテナの管理 [#vc2dbc49] 複数のコンテナを扱うので、そろそろ管理コマンド・ツールを理解する。 ***[[dockerコマンド>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker#jbff7b71]] [#pba54619] -docker image --docker image ls --docker image rm image xxxxxxxxxxxx -docker ps -docker inspect id xxxxxxxxxxxx -, etc. ***[[Kitematic>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Kitematic]]のインストール [#j09d8d0f] -[[Kitematic>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Kitematic]]はGUIの[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]管理ツール。 -Windows環境からは、以下のように[[Docker for Windows]]の~ タスクトレイ (Task tray) の Context Menu からダウンロードする。 #ref(21.png,left,nowrap,手順21,60%) #ref(22.png,left,nowrap,手順22,60%) -インストールはzip解凍でOK。 -解凍フォルダのexeを起動する。 **Update-Package [#z1c08310] Update-Packageを実行する。 **[[Kestrel>ASP.NET CoreのWebサーバ#c9a915ba]]のポートを固定する。 [#u9fb8311] Program.csに以下の行を追加する。 public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseUrls("http://0.0.0.0:5000/") // ← ココを追加 localhost や 127.0.0.1 だとダメ。 .Build(); **Dockerfileファイルの編集 [#qc6a4421] Dockerfileファイル(Dockerfile)の編集 ***[[ASP.NET Core]]コンテナ [#p52600f8] 既定のDockerfileファイルを修正 -変更前 FROM microsoft/aspnetcore:2.0 AS base WORKDIR /app EXPOSE 80 FROM microsoft/aspnetcore-build:2.0 AS build WORKDIR /src COPY WebApplication1.sln ./ COPY WebApplication1/WebApplication1.csproj WebApplication1/ RUN dotnet restore -nowarn:msb3202,nu1503 COPY . . WORKDIR /src/WebApplication1 RUN dotnet build -c Release -o /app FROM build AS publish RUN dotnet publish -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "WebApplication1.dll"] -変更後 --aspnetcore:2.0 ---> latestと変更 --EXPOSE 80 ---> 5000と変更 FROM microsoft/aspnetcore:latest AS base WORKDIR /app EXPOSE 5000 FROM microsoft/aspnetcore-build:latest AS build WORKDIR /src COPY WebApplication1.sln ./ COPY WebApplication1/WebApplication1.csproj WebApplication1/ RUN dotnet restore -nowarn:msb3202,nu1503 COPY . . WORKDIR /src/WebApplication1 RUN dotnet build -c Release -o /app FROM build AS publish RUN dotnet publish -c Release -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "WebApplication1.dll"] ***[[nginx>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?nginx]]コンテナ [#z2d69a4c] nginxフォルダにDockerfileファイルを作成する。~ ※ nginxフォルダは、[[Docker Composeファイル(docker-compose.yml)>#n1298d50]]と同じ階層に作成。 FROM nginx:latest COPY default.conf /etc/nginx/conf.d/default.conf **nginx設定ファイルの追加 [#lc233d2b] nginxフォルダにdefault.confを作成する。~ ※ nginxフォルダは、[[Docker Composeファイル(docker-compose.yml)>#n1298d50]]と同じ階層に作成。 ***[[既定値>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?nginx%E3%81%A7ASP.NET%20Core%E3%82%92%E3%83%9B%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B#nb5838f0]] [#nfb2946c] server { listen 80; server_name example.com *.example.com; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $http_host; proxy_cache_bypass $http_upgrade; } } ***変更後 [#ye6e194e] server { listen 80; server_name localhost; location / { proxy_pass http://xxx.xxx.xxx.xxx:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $http_host; proxy_cache_bypass $http_upgrade; } } ※ xxx.xxx.xxx.xxxには、 -以下コマンドを使用して、~ [[ASP.NET Core]]コンテナのIPAddressとして取得する。 -- docker ps -- docker inspect id xxxxxxxxxxxx -若しくは、[[Docker Composeファイル>#n1298d50]]のlinksに記載したサービス名を指定する。 links: - webapplication1 **Docker Composeファイルの編集 [#n1298d50] Docker Composeファイル(docker-compose.yml)の編集 ***既定値 [#r8abf02d] version: '3' services: webapplication1: image: webapplication1 build: context: . dockerfile: /WebApplication1/Dockerfile ***変更後 [#nd78a5b1] version: '3' services: nginx-proxy: image: nginx-proxy build: context: ./nginx dockerfile: Dockerfile ports: - "8888:80" links: - webapplication1 webapplication1: image: webapplication1 build: context: ./WebApplication1 dockerfile: Dockerfile ports: - "5000:5000" **補足 [#vb26db57] ***Dockerfile [#q9b54d6b] Dockerfileには様々な設定が可能。 -Dockerfileを使用する場合、~ buildにcontextとdockerfileを指定する。 -Dockerfileが必要ない場合、~ buildはサボってimageをそのまま利用することも可能。 ***Docker Composeファイル [#ea137492] -ports --ポートを公開(expose)する。 ---「ホスト : コンテナ」で、ホストとポートを指定する。 ---コンテナのポートのみ指定(ホスト側のポートはランダム)。 --公式のイメージでは、記載がなくてもデフォルト・ポートが公開(expose)される。 -links --コンテナ内の/etc/hostsに指定したサービス名が追加される。 --サービス名とリンク・エイリアス(サービス : エイリアス)の指定も可能。 -volumes --ホストのディレクトリをマウントする。 --再デプロイせずにローカルファイルの変更を反映できる。 --また、データストアのデータファイルにも使用できる。 -参考 --Qiita ---Docker Compose - docker-compose.yml リファレンス~ https://qiita.com/zembutsu/items/9e9d80e05e36e882caaa *手順4 [#qf76ac18] **概要 [#r8a42090] [[手順3>#kecabd32]]に -SessionストアのKVS(Redis)と -DataストアのDBMS(PostgreSQL)の コンテナを追加してみる。 ***永続化 [#ge1c3b76] -永続化の方法には、 --ホストのディレクトリにマウントする方法 --データコンテナを使う方法 --「起動時に都度、初期化する方法」 >がある。 -それぞれ、その用途から、 --KVS(Redis)には、「ホストのディレクトリにマウントする方法」~ (1つの負荷分散クラスタのSessionストアとして利用するため) --DBMS(PostgreSQL)には、「起動時に都度、初期化する方法」~ (ココでは、主に、テスト自動化での利用を検討しているため) >を採用する。 ***構成図 [#z8dda8b8] #ref(structure.png,left,nowrap,構成図,60%) **初期設定 [#f3e67222] [[手順3>#kecabd32]]と同じ。 **Redis [#p89016d2] ***構築 [#r661dc28] -redisフォルダにredis設定ファイルを追加~ ※ redisフォルダは、[[Docker Composeファイル(docker-compose.yml)>#n1298d50]]と同じ階層に作成。 --redis.confを作成し、外部から接続可能に設定する。 bind 0.0.0.0 -[[Docker Composeファイル(docker-compose.yml)>#n1298d50]]へ追記~ 以下のセクションを追加する。 --redis: redis: image: redis volumes: - ./redis/data:/data - ./redis/redis.conf:/usr/local/etc/redis/redis.conf command: redis-server --appendonly yes ports: - "6379:6379" restart: always ---/dataをマウントすると良い ---appendonly yesがないとデータが作られない --webapplication1:~ linksにサービス名を記載する。 links: - redis ***接続確認 [#g1f2fc48] [[WSL>Windows Subsystem for Linux]]から、redis-cliをインストールして確認する。 -インストール sudo apt-get install redis-tools -動作確認 $ redis-cli -h 127.0.0.1 127.0.0.1:6379> set mystr1 "abc" OK 127.0.0.1:6379> get mystr1 "abc" 127.0.0.1:6379> ***データ・アクセスの実装 [#da7c922d] -NuGet~ (既定でMicrosoft.AspNetCore.Allに含まれる) --Microsoft.AspNetCore.Session --Microsoft.Extensions.Caching.Redis.Core -以下を実装する。 --Startup.cs using System; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.AspNetCore.Http; namespace WebApplication1 { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Redisを設定 services.AddDistributedRedisCache(option => { option.Configuration = "redis"; option.InstanceName = "redis"; }); // Sessionを使用する。 services.AddSession(options => { // Set a short timeout for easy testing. options.IdleTimeout = TimeSpan.FromSeconds(10); options.Cookie.HttpOnly = true; }); services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseBrowserLink(); app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); // Sessionを使用する。 app.UseSession(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } } } --HomeController.cs public IActionResult Index() { HttpContext.Session.SetString("TestId", DateTime.Now.ToString()); return View(); } public IActionResult About() { ViewData["Message"] = "Your application description page. " + HttpContext.Session.GetString("TestId"); return View(); } -参考 --ASP.NET CoreのCache・SessionにRedisを使う - kikki's tech note~ http://kikki.hatenablog.com/entry/2016/11/16/090000 --ASP.NET Core のセッションとアプリケーションの状態 | Microsoft Docs~ https://docs.microsoft.com/ja-jp/aspnet/core/fundamentals/app-state ***テスト [#ae11f373] -画面 #ref(23.png,left,nowrap,手順23,60%) -redis-cli 127.0.0.1:6379> keys * 1) "redis69ed5ead-0115-372b-8ef7-665bc769e747" 2) "mystr1" **PostgreSQL [#h0bca956] ***構築 [#n65a2ca2] -postgresフォルダにpostgres設定ファイルを追加~ ※ postgresフォルダは、[[Docker Composeファイル(docker-compose.yml)>#n1298d50]]と同じ階層に作成。 --初期化用SQLを ./postgres/init/init.sh に作成 psql -U postgres << "EOSQL" CREATE DATABASE postgres; \c postgres; -------------------- -- TABLE: Shippers -------------------- CREATE TABLE Shippers( ShipperID integer NOT NULL, CompanyName VARCHAR(40) NOT NULL, Phone VARCHAR(24), CONSTRAINT PK_Shippers PRIMARY KEY (ShipperID) ); -------------------- -- Sequence: ShipperID -------------------- CREATE SEQUENCE TS_ShipperID; -------------------- -- INSERT -------------------- INSERT INTO Shippers (ShipperID, CompanyName, Phone) VALUES(nextval('TS_ShipperID'), 'Speedy Express', '(503) 555-9831'); INSERT INTO Shippers (ShipperID, CompanyName, Phone) VALUES(nextval('TS_ShipperID'), 'United Package', '(503) 555-3199'); INSERT INTO Shippers (ShipperID, CompanyName, Phone) VALUES(nextval('TS_ShipperID'), 'Federal Shipping', '(503) 555-9930'); EOSQL -[[Docker Composeファイル(docker-compose.yml)>#n1298d50]]へ追記~ 以下のセクションを追加する。 --postgres: image: postgres volumes: #- ./postgres/data:/var/lib/postgresql/data - ./postgres/init:/docker-entrypoint-initdb.d environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=seigi@123 ports: - "5432:5432" restart: always --webapplication1:~ linksにサービス名を記載する。 links: - redis - postgres ***接続確認 [#n84b925c] [[WSL>Windows Subsystem for Linux]]から、postgresql-clientをインストールして確認する。 -インストール sudo apt-get install postgresql-client -動作確認 $ psql -h 127.0.0.1 -d postgres -U postgres -c "select * from shippers" Password for user postgres: shipperid | companyname | phone -----------+------------------+---------------- 1 | Speedy Express | (503) 555-9831 2 | United Package | (503) 555-3199 3 | Federal Shipping | (503) 555-9930 (3 rows) ***データ・アクセスの実装 [#m6acfe6d] -NuGet:Npgsql -以下を実装する。 --HomeController.cs public IActionResult About() { string count = ""; using (var con = new NpgsqlConnection("HOST=postgres;DATABASE=postgres;USER ID=postgres;PASSWORD=seigi@123;")) { con.Open(); var cmd = new NpgsqlCommand(@"select count(*) from shippers", con); count = cmd.ExecuteScalar().ToString(); } ViewData["Message"] = "Your application description page. " + count + "件"; return View(); } ***テスト [#pf7f6274] -画面 #ref(24.png,left,nowrap,手順24,60%) *サンプル [#uf55eafa] -daisukenishino2/EvaluateAspNetCoreOnDocker:~ DockerでASP.NET Coreを評価する。(Evaluate ASP.Net Core on Docker.)~ https://github.com/daisukenishino2/EvaluateAspNetCoreOnDocker **MVC_Sample [#qf71fb01] https://github.com/daisukenishino2/EvaluateAspNetCoreOnDocker/tree/master/MVC_Sample -[[手順2>#b6ded901]]のサンプル **WebApplication1 [#y696a445] https://github.com/daisukenishino2/EvaluateAspNetCoreOnDocker/tree/master/WebApplication1 -[[手順3>#kecabd32]]、[[手順4>#qf76ac18]]のサンプル *参考 [#x2d9b382] -c# - Remote debugging asp.net core on linux server - Stack Overflow~ https://stackoverflow.com/questions/42483122/remote-debugging-asp-net-core-on-linux-server -Windows 10 に Docker for Windows をインストール|No IT No Life - おすぎやん サーバの設計・構築~ https://server-network-info.blogspot.jp/2017/09/windows-10-docker-for-windows.html **Microsoft Docs [#t0c26e72] -Visual Studio Tools for Docker と ASP.NET Core~ https://docs.microsoft.com/ja-jp/aspnet/core/host-and-deploy/docker/visual-studio-tools-for-docker -Visual Studio Tools for Docker (Windows 上の Visual Studio) を使用~ https://docs.microsoft.com/ja-jp/dotnet/standard/containerized-lifecycle-architecture/design-develop-containerized-apps/visual-studio-tools-for-docker --ローカルの Docker コンテナーでアプリをデバッグする~ https://docs.microsoft.com/ja-jp/azure/vs-azure-tools-docker-edit-and-refresh --リモート Docker ホストへの ASP.NET Core Linux Docker コンテナーのデプロイ~ https://docs.microsoft.com/ja-jp/azure/vs-azure-tools-docker-hosting-web-apps-in-docker **きよくらの備忘録 [#k372b16f] -Docker for Windowsを使用したASP.NET Core のデバッグ実行~ http://kiyokura.hateblo.jp/entry/2016/10/19/225243 **ONE-RUN [#o9a46b3d] -Docker for Windowsをインストールする~ https://st40.xyz/one-run/article/314/ -Dockerでよく利用するコマンドまとめ~ https://st40.xyz/one-run/article/317/ -Dockerでnginx + ASP.NET Core 2.0のWebサーバ環境を構築する~ https://st40.xyz/one-run/article/318/ **銀の光と碧い空 [#b34aa8fb] -Visual Studio Tools for Docker が ASP.NET CoreのDockerデバッグ実行している仕組みを追ってみた~ http://tech.tanaka733.net/entry/research-docker-debug-in-visual-studio-tools-for-docker -Visual Studio から AzureやWindows以外のdocker containerで走るASP.NET Core をリモートデバッグする~ http://tech.tanaka733.net/entry/remote-debug-aspnetcore-on-docker-from-visual-studio -VisualStudio 2017 RC3 から .NET Core on RHEL にリモートデバッグする~ http://tech.tanaka733.net/entry/remote-debug-dotnetcore-on-rhel-from-vs2017rc3 -.NET Core がLinuxでどのように動いているか、~ またわれわれはどのようにデバッグするのか~ Issue #8 · uzulla/y8-2017-spring-talks~ https://github.com/uzulla/y8-2017-spring-talks/issues/8 --https://www.youtube.com/watch?v=omgHW1Rcl18&index=8&list=PLqyYlv12JxkTzXvHqCLk0LmlQXSYzKXIu --https://onedrive.live.com/view.aspx?resid=B266A6B27EC808AC!260058&ithint=file%2cpptx&app=PowerPoint&authkey=!ALbzXlWLJJkbbwA **データストア・コンテナ関連 [#pdf5ab9b] -docker-composeで開発用のredisとmysqlを構築する - まがりの日記~ http://oomatomo.hatenablog.com/entry/docker-machine-redis-mysql -コンテナーとして実行するデータベース サーバーの使用 | Microsoft Docs~ https://docs.microsoft.com/ja-jp/dotnet/standard/microservices-architecture/multi-container-microservice-net-applications/database-server-container ***Redis [#z2086367] 外部から接続する場合、redis.confを修正する必要がある模様。 -redisサーバー構築メモ - @Konboi memo~ http://oomatomo.hatenablog.com/entry/docker-machine-redis-mysql ***PostgreSQL [#h3b4fa8e] -永続化 --docker-composeでデータベースコンテナを立てるときのTips~ https://muunyblue.github.io/9f067d8d6df2d4b8c64fb4c084d6c208.html --データはどう管理するべきなのか with Docker~ https://qiita.com/kikuchi_kentaro/items/4565292affaf2e521e0f -初期化 --Docker Hub 公式 PostgreSQL イメージを用いて、~ データベースクラスタ作成済みコンテナイメージを作成する - Thanks Driven Life~ http://gongo.hatenablog.com/entry/2015/08/04/232650 --Docker PostgreSQL公式イメージを使用してDBに初期データを流し込む - Qiita~ https://qiita.com/furu8ma/items/c7e33ae34ef0216843b8 ---- Tags: [[:.NET開発]], [[:.NET Core]], [[:Hyper-V]], [[:仮想化]]