Мне очень повезло: я настроил mysql с пользователем root и запустил его на какой-то удаленной машине. MySQL имеет некоторые строгие требования к разрешению root@localhost отличается от root@127.0.0.1, например. Или это то, что я не понял. Если вы обнаружите иное, пожалуйста, поделитесь.
Просто пытаюсь помочь здесь. Переключитесь на другую строку подключения в виде
appsettings. json
"server=<database name from docker-compose >;port=3306;userid=<database owner>;password=<owner password>;database=<database name>;"
docker -композиция может выглядеть следующим образом:
docker -композиция. 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
Избегайте записи пользовательских 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;
Надеюсь, это поможет.