在 docker 中使用 .net core 和 mysql 时出现数据库连接错误

赛义德·古拉姆扎德

我在带有 MySQL 数据库的 .net 核心中有一个简单的 Web API 应用程序,它在没有 docker 的情况下也可以在本地运行。我有 Windows 10 家庭版,不能直接使用 docker,我必须使用 VirtualBox 才能使用 docker。

应用程序设置

"DatabaseConfig": {
    "Server": "db",
    "Port": "3306",
    "Database": "CoreApiDatabase",
    "User": "root",
    "Password": "27101376"
  }

配置服务

var server = Configuration["DatabaseConfig:Server"];
var port = Configuration["DatabaseConfig:Port"];
var database = Configuration["DatabaseConfig:Database"];
var user = Configuration["DatabaseConfig:User"];
var password = Configuration["DatabaseConfig:Password"];

services.AddDbContext<ApplicationDbContext>(options =>
options.UseMySql($"server={server}; userid={user}; pwd={password}; port={port}; database={database}"));

在 startup.cs 的配置方法中迁移和种子数据库

文件

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build-env
WORKDIR /app

COPY *.csproj ./
RUN dotnet restore

COPY . ./
RUN dotnet publish -c Release -o out

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 
WORKDIR /app
EXPOSE 80
COPY --from=build-env app/out .
ENTRYPOINT [ "dotnet","CoreApiDatabase.dll" ]

Docker-compose.yml

version: "3"

services:
  db:
    image: mysql
        ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: 27101376
    networks:
      - default

  coreapidatabase:
    image: saeedgz98/coreapidatabase
    build:
      context: .
      dockerfile: Dockerfile
    links:
      - db:db
    ports:
      - 8001:80
    restart: always

最后,在运行命令docker-compose up 时,我在执行和执行迁移时收到此错误。

在此处输入图片说明

齐奥拉汗

我在用 root 用户设置 mysql 并在某些远程机器上运行它时运气很差。MySQL 有一些严格的权限要求 root@localhost 与 [email protected] 不同,例如。或者这就是我所理解的。如果您发现其他情况,请分享。

只是想在这里提供帮助。切换到另一种连接字符串形式

appsettings.json

"server=<database name from docker-compose >;port=3306;userid=<database owner>;password=<owner password>;database=<database name>;"

docker-compose 可能如下所示:

docker-compose.yaml

version: '3.3'
services:
  moviedb:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: <root password>
      MYSQL_DATABASE: <database name>
      MYSQL_USER: <database owner>
      MYSQL_PASSWORD: <owner password>

文件

避免编写自定义 dockerfile。使用 Visual Studio 创建并修改该文件的那个。

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

FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY ["<project relative path>", "<project name>/"]
RUN dotnet restore "<project relative path>"
COPY . .
WORKDIR "/src/<project name>"
RUN dotnet build "<csproj name>" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "<csproj name>" -c Release -o /app/publish

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

也可以运行下面的docker命令,尝试登录数据库服务器

调试提示:

docker-compose up
docker ps
docker exec -it <sql container id> bash

一旦进入容器。运行以下 mysql 命令:

mysql -u <owner name> -p 
<owner password>
SHOW DATABASES; 
USE <database name>; 
SHOW TABLES; 

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 .NET Core 中连接到 Oracle 数据库时出现 Kerberos 错误

使用 C# .NET Core 3 使用 SSL 证书连接到 MySQL 数据库

插入数据库时出现.NET Core错误502.3

在Docker,tensorflow,Windows 10中使用本地文件系统和MySQL数据库

仅使用xamarin Andriod连接到mySQL数据库时出现问题,但可在iOS和UWP中使用

使用 Docker-Compose 连接 FastAPI 服务器和 MySQL 数据库的问题

无法使用Adminer和docker-compose连接到MySQL数据库

无法使用docker-compose与mysql和php 7连接到数据库

使用 .NET Core 服务从 MySQL 读取 č、ć 和 đ

在Docker上运行Mysql和Wordpress,收到消息建立数据库连接错误

在Linux Docker中使用.Net Standard库运行.Net Core应用程序

无法在docker中使用mysql连接到数据库sonarqube

在.net core和.net框架中使用.net标准包

使用ASP .Net Core连接到Oracle数据库

无法使用PHP连接到我的bplaced.net Mysql数据库(无错误)

ProgrammingError:使用Django和mysql数据库执行inspectdb时出现1064

如何在ASP.NET Core Web应用程序中使用Entity Framework Core从数据库保存和检索图像?

在本地开发和使用Docker时,是否可以在MySQL工作台中看到我的WordPress数据库?

使用Pomelo和.Net Core 2.1搭建MySQL视图

.NET Core延迟高峰-MySQL和Redis偶尔无法连接

使用Oracle Managed Driver Core的asp.net core docker容器。打开连接时抛出ORA-00604和ORA-01882

使用ASP.NET CORE从选项菜单向数据库中插入数据时出现问题

asp.net core / EF-Core mysql更新数据库错误

在.net Core中使用双重授权(Bearer和Basic)时获得403

在.Net Core 2.0和Angular中使用'dotnet publish'时找不到模块'aspnet-webpack'

在 .NET Core 2.0 中使用 Omron 库

连接到MySQL本地数据库时出现错误

如何使用.NET Core类库(.NET标准)与SQL Server数据库连接?

使用 JavaScript 和 asp.net core 从数据库中删除现有图像