从一个dotnet core docker容器访问mysql docker容器时出错
我尝试使用docker compose在DotNet Core和MySQL docker容器上构建一个应用程序 我使用了Entity Framework,并使用以下连接字符串通过命令成功建立了连接并更新了数据库: “服务器=127.0.0.1;数据库=hellofreshgo;用户=root;密码=hellofreshgo;端口=3306” 但是,当我将netcore应用程序docker化或容器化并尝试检索数据并使用此连接字符串和以下docker compose文件连接mysql容器时: “服务器=mysql;数据库=hellofreshgo;用户=root;密码=hellofreshgo;端口=3306” 版本:“3.4”从一个dotnet core docker容器访问mysql docker容器时出错,mysql,asp.net,docker,asp.net-core,docker-compose,Mysql,Asp.net,Docker,Asp.net Core,Docker Compose,我尝试使用docker compose在DotNet Core和MySQL docker容器上构建一个应用程序 我使用了Entity Framework,并使用以下连接字符串通过命令成功建立了连接并更新了数据库: “服务器=127.0.0.1;数据库=hellofreshgo;用户=root;密码=hellofreshgo;端口=3306” 但是,当我将netcore应用程序docker化或容器化并尝试检索数据并使用此连接字符串和以下docker compose文件连接mysql容器时: “服务
services:
hfgo.backendtest.api:
image: ${DOCKER_REGISTRY-}hfgobackendtestapi
build:
context: .
dockerfile: src/Presentations/HFGO.BackendTest.API/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:8080;http://+:80
volumes:
- ./:/server/http
links:
- mysql
ports:
- "8080:8080"
depends_on:
- mysql
volumes:
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
mysql:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- "3306:3306"
environment:
LC_ALL: C.UTF-8
MYSQL_ROOT_PASSWORD: hellofreshgo
MYSQL_DATABASE: hellofreshgo
我得到了以下错误:
System.InvalidOperationException:引发的异常为
可能是由于瞬时故障。考虑启用瞬态误差
通过向“UseMySql”调用添加“EnableRetryOnFailure()”实现恢复能力。
--->MySql.Data.MySqlClient.MySqlException(0x80004005):无法连接到任何指定的MySql主机。-->
System.AggregateException:发生一个或多个错误。(连接
(127.0.0.1:3306)
在错误提到的有人问“是”之前,我已经将
EnableRetryOnFailure()
添加到UseMySQL()
连接到127.0.0.1:3306
不起作用似乎是合乎逻辑的。它应该尝试在mysql:3306
找到服务器。您可以在容器中运行一个shell,然后检查是否可以安装mysql客户端并通过主机名连接到mysql服务器。@weargo您的意思是在我的api容器中安装一个mysql客户端并尝试从该客户端连接到mysql容器吗?如果是,你会怎么做?我可以使用哪些命令?连接到127.0.0.1:3306
似乎不合逻辑。它应该尝试在mysql:3306
上查找服务器。您可以在容器中运行一个shell,然后检查是否可以安装mysql客户端并通过主机名连接到mysql服务器。@weargo您的意思是在我的api容器中安装一个mysql客户端并尝试从该客户端连接到mysql容器吗?如果是,你会怎么做?我可以使用哪些命令?