docker compose для asp.net ядро и mysql

#mysql #docker #asp.net-core #asp.net-core-3.1

#mysql #docker #asp.net-ядро #asp.net-core-3.1

Вопрос:

Я пытаюсь настроить docker compose для asp.net ядро и mysql.

Для docker-compose.yml

 version: '3.5'
services:
    xx-server:
        container_name: 'xx-server'
        image: 'mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim'
        restart: always
        working_dir: '/app'
        ports: 
            - "8888:80"
            - "8887:443"
        volumes: 
            - 'C:Usersxxnetcoreapp3.1:/app'
        entrypoint: 
            ["dotnet", "xx.Web.Host.dll"]
        environment: 
            - "ASPNETCORE_URLS=https:// ;http:// "
        depends_on: 
            - db
    db:
        container_name: 'db'
        image: 'mysql'
        restart: always
        environment: 
            MYSQL_DATABASE: 'mydbname'
            MYSQL_ROOT_PASSWORD: 'mydbpd'
            MYSQL_USER: 'mydbuser'
            MYSQL_PASSWORD: 'mydbpd'
        ports: 
          - "8885:3306"
        volumes: 
           - 'C:Usersxxmysql1:/var/lib/mysql'
  

И я использовал connectionstring ниже в appsettings.json

   "ConnectionStrings": {
    "Default": "server=db;port=8885;userid=mydbuser;pwd=mydbpd;database=mydbname"
  },
  

Но он всегда выдает ошибку, которая

 An exception has been raised that is likely due to a transient failure. 
Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseMySql' call.
  

После запуска docker-compose up я мог подключить свою базу данных из mysql studio.

Но, asp.net основной контейнер всегда не может подключить базу данных mysql.

Комментарии:

1. Поскольку ваш asp.net контейнер должен получить доступ к контейнеру mysql из сети docker, сопоставление портов бессмысленно для asp.net контейнер. Помогает ли изменение значения порта в строке подключения port=3306 решить вашу проблему?

2. @octagon_octopus вы спасли мой день, большое спасибо. Он должен идти без сопоставления портов.