簡體   English   中英

無法使用.Net API 從我的 Docker 容器訪問 MySql DB

[英]Can't access MySql DB from my Docker container with .Net API

一開始我想說我是新來的,如果我的問題不准確,我很抱歉。

Ubuntu 18.4 托管在 VPS 上,MySql 服務器安裝(不是 Docker)在我運行 Docker 和 API 的同一系統上。

無法使用.Net API 從我的 Docker 容器訪問 MySql DB。

Dockerfile:


FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["CVMakerAPI/CVMakerAPI.csproj", "CVMakerAPI/"]
RUN dotnet restore "CVMakerAPI/CVMakerAPI.csproj"
COPY . .
WORKDIR "/src/CVMakerAPI"
RUN dotnet build "CVMakerAPI.csproj" -c Release -o /app/build

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

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

[在 ConnecitonString 中,我使用有權訪問此數據庫的用戶][1] [1]:https://i.stack.imgur.com/AHQey.png

[當我嘗試做一些請求時,我得到:] [2] [2]:https://i.stack.imgur.com/RXLFp.png

如果需要更多信息,請詢問。

在容器內部,我們處於不同的網絡空間。 因此,默認情況下,我們無法訪問主機網絡中運行的任何內容。 在這種情況下 MySQL。

默認情況下,所有 docker 容器都使用Bridge網絡模式。 https://docs.docker.com/network/

就 Docker 而言,橋接網絡使用軟件橋接,允許連接到同一橋接網絡的容器進行通信,同時提供與未連接到該橋接網絡的容器的隔離。 Docker 網橋驅動程序自動在宿主機中安裝規則,使不同網橋網絡上的容器不能直接相互通信。

因此,您的容器無法與在主機網絡上運行的 Mysql 通信。

要從容器訪問主機網絡,您可以在主機網絡命名空間中運行容器。

docker run --network host <your container>

https://docs.docker.com/network/host/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM