Docker mysql 容器无法连接到任何指定的 MySQL 主机
Docker mysql container Unable to connect to any of the specified MySQL hosts
我正在使用 docker-compose 开发 asp .net core 5.0 web application
,我正在 运行 开发 docker。我的 asp.net core
应用程序和 MySQL
有 2 项服务
当我尝试 运行 EF 命令 add-migration
我得到这个错误:
Unable to connect to any of the specified MySQL hosts.
这是我的 Dockerfile
的代码
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
EXPOSE 8008
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["chatroom.csproj", "."]
RUN dotnet restore "./chatroom.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "chatroom.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "chatroom.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
EXPOSE 5000
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "chatroom.dll"]
这是我的 docker-compose.yml
文件的代码
version: '3.0'
services:
db:
image: mysql:latest
container_name: mysqldb
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: livredb
MYSQL_USER: wassef
MYSQL_PASSWORD: hw
restart: always
ports:
- "3306:3306"
web:
image: chatroom
build:
context: .
dockerfile: Dockerfile
ports:
- "8008:5000"
depends_on:
- db
这是我的 ConnectionString
"ConnectionStrings": {
"mydb": "server=db;port=3306;userid=wassef;password=hw;database=livredb;"
},
顺便说一句,当我访问我的 MySQL
客户端时,我可以看到正在创建我的数据库
原来主机网络无法访问docker网络。 docker 网络仅用于容器到容器的通信。因此我将 ConnectionString 服务器更改为 server=localhost
我正在使用 docker-compose 开发 asp .net core 5.0 web application
,我正在 运行 开发 docker。我的 asp.net core
应用程序和 MySQL
有 2 项服务
当我尝试 运行 EF 命令 add-migration
我得到这个错误:
Unable to connect to any of the specified MySQL hosts.
这是我的 Dockerfile
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
EXPOSE 8008
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["chatroom.csproj", "."]
RUN dotnet restore "./chatroom.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "chatroom.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "chatroom.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
EXPOSE 5000
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "chatroom.dll"]
这是我的 docker-compose.yml
文件的代码
version: '3.0'
services:
db:
image: mysql:latest
container_name: mysqldb
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: livredb
MYSQL_USER: wassef
MYSQL_PASSWORD: hw
restart: always
ports:
- "3306:3306"
web:
image: chatroom
build:
context: .
dockerfile: Dockerfile
ports:
- "8008:5000"
depends_on:
- db
这是我的 ConnectionString
"ConnectionStrings": {
"mydb": "server=db;port=3306;userid=wassef;password=hw;database=livredb;"
},
顺便说一句,当我访问我的 MySQL
客户端时,我可以看到正在创建我的数据库
原来主机网络无法访问docker网络。 docker 网络仅用于容器到容器的通信。因此我将 ConnectionString 服务器更改为 server=localhost