Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从一个dotnet core docker容器访问mysql docker容器时出错_Mysql_Asp.net_Docker_Asp.net Core_Docker Compose - Fatal编程技术网

从一个dotnet core docker容器访问mysql docker容器时出错

从一个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容器时: “服务

我尝试使用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”

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容器吗?如果是,你会怎么做?我可以使用哪些命令?