2. 自己紹介
Red Hat K.K. 勤務
◦ Software Maintenance Engineer
◦ 担当はOpenShiftと(いつの間にか)Microsoftとの協業分野全般
◦ .NET Core on RHEL, Red Hat solutions on Azure, SQL Server on RHEL
◦ 会社Blog: Red Hat Developers
Personal
◦福岡県北九州市出身
◦ Microsoft MVP for VSDT
◦ Blog: 銀の光と碧い空
◦ Build Insiderで.NET Core連載中
VSDT: Visual Studio & Development Technologies
9. 新しいDockerfile
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY *.sln ./
COPY WebApplication1/WebApplication1.csproj WebApplication1/
RUN dotnet restore
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"]
31. container A
cnotainer B
container C
ASP.NET Core
ASP.NET Core
ASP.NET Core
それぞれのコンテナに
別々にセッションデータが格納される
container AでHTTPセッション確立しても
次のHTTPリクエストがcontainer Bだと
確立したセッションの情報はない
33. container A
container B
container C
ASP.NET Core
ASP.NET Core
ASP.NET Core
Session Data
A’
containerごとに異なるキー
セッションデータ自体を
共有できても、キーが違うので
復号できず意味がない
~/.aspnet
IDistributedCacheをRedisに設定するだけだと…
34. machine A
machine B
machine C
ASP.NET Core
ASP.NET Core
ASP.NET Core
Session Data
IDataProtectionもRedisに設定
キー自体をRedisに保存して
共有するのでOK!
Redisが死んだ場合の考慮は必要
37. BlogTemplateを題材にしてみます
ASP.NET Coreで作られたブログテンプレート
◦ MSDN Blogで紹介
Welcome to the New Blog Template for ASP.NET Developers
◦ ブログのデータはFilesystem上にxmlファイルとして配置するので、
EF Coreは認証まわりで利用するのみ
修正する必要はあるけどクロスプラットフォームで動きます
◦ Local SQLServer SQLite
◦ https://github.com/VenusInterns/BlogTemplate/issues/187
◦ SQL Server on Linuxでもいいけど同じ1ファイルベースで扱えるので
◦ ファイルパスがWindows Style前提なのを共通化
◦ https://github.com/VenusInterns/BlogTemplate/issues/188