質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

ASP.NET Web API

ASP.NET Web APIはブラウザやモバイル機器のようなクライアント向けのHTTPサービスを構築するフレームワークです。Microsoft .NET Frameworkがベースになっており、RESTfulサービスを構築するには理想的です。

Q&A

0回答

1240閲覧

既存のAPIからDocker for Desktopで作成したsql serverコンテナに接続したい。

ruchaos1192

総合スコア1

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

ASP.NET Web API

ASP.NET Web APIはブラウザやモバイル機器のようなクライアント向けのHTTPサービスを構築するフレームワークです。Microsoft .NET Frameworkがベースになっており、RESTfulサービスを構築するには理想的です。

0グッド

0クリップ

投稿2021/09/04 02:24

編集2021/09/06 14:15

既存のAPIからDocker for Desktopで作成したsql serverコンテナに接続したい。

仕様環境
API側
ASP.net Core API フレームワーク .NET5.0

Docker for Desktop側
SQL Server 2019 Linux コンテナーイメージ

現在 Visual Studio 2019で作成した APIにDocker for Desktopで作成した
sql server Linux コンテナーイメージに接続したいと思っております。

ASP.net core API側のappsettings.jsonの接続文字列について変更して接続、
もしくはAPI側のDocker file内で接続文字列を追加するのかご教授いただければと思います。

(追記)ASP.net Coreで作成したAPIはDockerを挟まず、既存のSql ServerのローカルDB環境には
IIS上から接続できております。また、接続文字列はAPI内のappsettings.json内のDefaultConnection
を用いて接続しております。以下APIのappsettings.jsonのコードのになります。

{ "ConnectionStrings": { "DefaultConnection": "Data Source=localhost;Initial Catalog=ContosoUniversity1;User ID=SA;Password=<YourStrong!Passw0rd>" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information", "Microsoft.EntityFrameworkCore.Database.Command": "Information" } }, "AllowedHosts": "*" }

また、VisualのDocker自動生成にてDockerfileの生成を行いましたのでDockerfileとAPI全体のプロパティを
載せておきます。

Dockerfile #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build WORKDIR /src COPY ["SampleAPI001/SampleAPI001.csproj", "SampleAPI001/"] RUN dotnet restore "SampleAPI001/SampleAPI001.csproj" COPY . . WORKDIR "/src/SampleAPI001" RUN dotnet build "SampleAPI001.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "SampleAPI001.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "SampleAPI001.dll"]
launchSettings.json { "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:24399", "sslPort": 44335 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" } }, "ContosoUniversity": { "commandName": "Project", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development", "ASPNETCORE_HOSTINGSTARTUPASSEMBLIES": "Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" }, "dotnetRunMessages": "true", "applicationUrl": "https://localhost:5001;http://localhost:5000" }, "Docker": { "commandName": "Docker", "launchBrowser": true, "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}", "environmentVariables": { "ASPNETCORE_URLS": "https://+:443;http://+:80", "ASPNETCORE_HTTPS_PORT": "44360" }, "httpPort": 51803, "useSSL": true, "sslPort": 44360 } } }
作成した Sql server Linux コンテナ Power Shell上で実施 docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU1-rhel-8 docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1433:1433 -d mcr.microsoft.com/mssql/rhel/server:2019-CU1-rhel-8
現在稼働しているdockerコンテナ PS C:\Users\mycomputer> docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 77eccb6eab1b contosouniversity:dev "tail -f /dev/null" 12 minutes ago Up 12 minutes 0.0.0.0:51803->80/tcp, :::51803->80/tcp, 0.0.0.0:44360->443/tcp, :::44360->443/tcp SampleAPI001 853e85ecd04a mcr.microsoft.com/mssql/rhel/server:2019-CU1-rhel-8 "/opt/mssql/bin/perm…" 2 days ago Up 22 minutes 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp practical_swirles

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2021/09/04 05:59

現状どうなってるのか何も伝わらないけど、例えばそのAPIとやらが動く環境とDockerホストは同一なのか、もしくは別だけど通信できてるのか、とか、ポートフォワードしてるのか、とか、API側はどのようにしてDBに接続しようとしているのかがわかる情報を出せるだけ出さないと回答不能に見える。
ruchaos1192

2021/09/06 02:40

現時点でのAPIの環境について更新しました。
gentaro

2021/09/06 07:28

SQL Serverのコンテナへの接続について質問してるんじゃないの? だったらDockerfileがあるならそれも提示した方が良いし、コンテナ起動時にどういうオプションで起動されてるのかわからんと意味ない。
gentaro

2021/09/06 07:35

あと接続文字列が「Integrated Security=True」になってるけど、Linuxコンテナに対して統合認証を使おうと思ってるという事? 方法はありそうだけど、相当面倒くさい準備が必要だと思うんだけども。
ruchaos1192

2021/09/06 14:18

情報を追加しました。 ・作成したSql Server Linuxコンテナの追加 ・現在稼働しているコンテナの追加 ・appsettings.jsonの接続文字列の変更(Windows認証→SQL Server認証) よろしくお願いいたします。
ruchaos1192

2021/09/07 09:42

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問