![](/img/trans.png)
[英]Can't access a MySQL DB from Python within the same Docker container
[英]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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.