アーカイブ

Archive for the ‘Docker’ Category

コンテナサポートを追加するで追加した Dockerfile ファイルと、コンテナオーケストレーターサポートの追加で追加された Dockerfile が微妙に違う

こちらはプロジェクトの追加時、もしくはコンテナサポートの追加時に追加される Dockerfile
パスの指定にダブルクオートがある

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 9080
EXPOSE 44372

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ["../WebApplication3/WebApplication3.csproj", "../WebApplication3/"]
RUN dotnet restore "../WebApplication3/WebApplication3.csproj"
COPY . .
WORKDIR "/src/../WebApplication3"
RUN dotnet build "WebApplication3.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "WebApplication3.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApplication3.dll"]

コンテナオーケストレーターサポートの追加で追加された、もしくは上書きされた Dockerfile は、パスの指定にダブルクオートが無い

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 9080
EXPOSE 44372

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY ../WebApplication3/WebApplication3.csproj ../WebApplication3/
RUN dotnet restore ../WebApplication3/WebApplication3.csproj
COPY . .
WORKDIR /src/../WebApplication3
RUN dotnet build WebApplication3.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish WebApplication3.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApplication3.dll"]

ん?ソリューションフォルダーからの相対位置に空白がある状態で、コンテナオーケストレーターサポートを追加したらどうなるんだろう。
docker build は普通に通るので問題ないのか。

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 9701
EXPOSE 44374

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY test test/WebApplication4/WebApplication4.csproj test test/WebApplication4/
RUN dotnet restore test test/WebApplication4/WebApplication4.csproj
COPY . .
WORKDIR /src/test test/WebApplication4
RUN dotnet build WebApplication4.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish WebApplication4.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApplication4.dll"]
広告
カテゴリー:Docker タグ:

Visual Studio 2017 15.8でdocker-composeを利用する場合は、コンテナオーケストレーターレーターサポートからdocker-compose.ymlを追加する

Visual Studio 2017 バージョン 15.8 で Docker サポートを有効にした ASP.NET Core のアプリケーションを作ったら、docker-compose.yml が自動的に追加されなかったのでメモ

Visual Studio Tools for Docker と ASP.NET Core」の「アプリにコンテナー オーケストレーター サポートを追加する」を参照すると、下記のような記載が追加されていた。

Visual Studio 2017 バージョン 15.8 以降では、指示された場合にのみ、オーケストレーション ソリューションが追加されます。 ソリューション エクスプローラーでプロジェクトを右クリックして、[追加] > [Container Orchestrator Support](コンテナー オーケストレーター サポート) の順に選択します。 Docker Compose と Service Fabric という 2 つの異なる選択肢が提供されています。

MSDNにある通り、プロジェクトのプロパティー > 追加 > コンテナオーケストレーターサポートを選択し、
DockerComposeの追加1

Docker Compose を選択すると、
DockerComposeの追加2

ベースイメージを Windows にするか Linux にするかを尋ねられるのでOSを選択する。
DockerComposeの追加3

ソリューションに docker-compose が追加され、スタートアッププロジェクトに設定される。
DockerComposeの追加6

こんな感じの docker-compose.yml が追加される。

 version: '3.4'

services:
  webapplication1:
    image: ${DOCKER_REGISTRY}webapplication1
    build:
      context: .
      dockerfile: WebApplication1/Dockerfile

複数のプロジェクトに対してコンテナオーケストレーターサポートを追加すると、docker-compose.yml に設定が追加されるので、必要に応じてdepends_onを設定すればよい。

version: '3.4'

services:
  webapplication1:
    image: ${DOCKER_REGISTRY}webapplication1
    build:
      context: .
      dockerfile: WebApplication1/Dockerfile

  webapplication2:
    image: ${DOCKER_REGISTRY}webapplication2
    build:
      context: .
      dockerfile: WebApplication2/Dockerfile
カテゴリー:ASP.NET, Docker タグ: ,

MacでDockerサポートな.net coreをデバックする場合は、/usr/local/share/dotnet/sdk/NuGetFallbackFolderをFileShareに設定する。

Visual Studio 2017で作った、DockerサポートありのASP.NET Coreプロジェクトを、Visual Studio for Macででバックしようとしたら、こんなエラーで怒られた。

/Applications/Visual Studio.app/Contents/Resources/lib/monodevelop/AddIns/docker/MonoDevelop.Docker/MSbuild/Sdks/Microsoft.Docker.Sdk/build/Microsoft.VisualStudio.Docker.Compose.targets(363,5):
error :
ERROR: for dockercompose10154073938731495326_todo_1
Cannot start service todo: b’Mounts denied:
The path /usr/local/share/dotnet/sdk/NuGetFallbackFolder
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker ->
Preferences… ->
File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

言われた通り、Dockerの設定から、下記のフォルダーをFile Shareに追加したらうまく動いた

/usr/local/share/dotnet/sdk/NuGetFallbackFolder

Riderだとこんなエラーが出て実行できない。
これはWindowsでも同じだから、Rider側の対応が必要そう

Project ‘docker-compose’ load failed: The SDK ‘Microsoft.Docker.Sdk’ specified could not be found.

サポートを見ると現在作業中?

https://rider-support.jetbrains.com/hc/en-us/community/posts/115000634804-Visual-Studio-Tools-for-Docker-Support-needed

リンクにある通り、単にビルドするだけならRiderの拡張機能を使ったり自前でビルドすれば良いんだけれど、デバックまで考えるとVSMacと同等の機能があると嬉しい。

カテゴリー:ASP.NET, DB, Docker, 未分類

Docker for Windows のエッジ版にもKubernetes入った?

お家の環境のDockerが更新されたんだけれど、設定画面にKubernetesの文字が、ちゃんと勉強しなきゃ。。。
キャプチャ.PNG

いや、それ以前にネットワークの調子が悪くてアップデート後にDockerが上がらない、、、Reset to factory defaultsで初期化してあげたらこんな画面が
キャプチャ2.PNG
ログにはこんなのが出てた。

[23:32:49.292][NamedPipeClient][Error ] Unable to send Start: Unable to create File System Image
[23:32:49.292][Notifications ][Error ] Unable to create File System Image
[23:32:49.291][NamedPipeServer][Error ] Unable to execute Start: Unable to create File System Image 場所 Docker.Backend.ContainerEngine.Linux.DoStart(Settings settings, String daemonOptions) 場所 C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\ContainerEngine\Linux.cs:行 244
場所 Docker.Backend.ContainerEngine.Linux.Start(Settings settings, String daemonOptions) 場所 C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\ContainerEngine\Linux.cs:行 109

ちょい下にはこんな警告も

[23:32:49.326][CrashReport ][Warning] Unable to collect features settings: ファイル ‘C:\Users\karua\AppData\Roaming\Docker\features-overrides.json’ が見つかりませんでした。
[23:32:49.320][VpnKit ][Warning] Unable to download logs: 操作がタイムアウトしました。

カテゴリー:インフラ, Docker