在docker中用MySQL数据库设置aspnetcore

我正在尝试设置一个docker-compose文件,其中包含一个用于asp.net-core,mysql数据库和phpmyadmin的容器。 设置我的mysql服务器没有问题,我可以通过phpmyadmin访问它。 另外我的asp.net核心应用程序运行正常,我可以在浏览器中访问它。

但是,我无法与我的MySQL数据库build立连接。 应用程序不断返回:

无法连接到任何指定的MySQL主机

应用程序通过appsettings.json中的连接string进行连接。

{ "ConnectionStrings": { "FlowerAPIConnection": "server=localhost;userid=user;password=user;database=bloemenapi_db;Convert Zero Datetime=True" }, "Logging": { "IncludeScopes": false, "Debug": { "LogLevel": { "Default": "Warning" } }, "Console": { "LogLevel": { "Default": "Warning" } } } } 

我的猜测是,在泊坞窗容器的应用程序和MySQL运行似乎无法在本地主机上find对方。 我尝试使用连接string中的MySQL容器的IP地址,但也没有工作。

我正在使用以下docker-compose.yml和Dockerfile。

 version: '3' services: db: image: mysql restart: always container_name: flowerapi-db environment: - MYSQL_USER=root - MYSQL_PASSWORD=user - MYSQL_ROOT_PASSWORD=user - MYSQL_DATABASE=bloemenapi_db ports: - "3306" phpmyadmin: image: phpmyadmin/phpmyadmin container_name: flowerapi-pma ports: - "81:80" external_links: - db:mysql environment: PMA_HOST: "db" PMA_PORT: 3306 web: image: flowerapi container_name: flowerapi-web build: context: ./FlowerAPI dockerfile: Dockerfile ports: - "5000:80" links: - db depends_on: - db 

Dockerfile

 FROM microsoft/aspnetcore:2.0 LABEL name "flower-api" ARG source WORKDIR /app EXPOSE 5000/tcp COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["dotnet", "FlowerAPI.dll"] 

谢谢你的帮助。

尝试这个。 连接string与MSSQL有点不同

 "ConnectionStrings":{ "FlowerAPIConnection":"Server=db;port=3306;Database=bloe‌menapi_db;User=user;Password=password;" } 

默认情况下,容器不允许任何人从容器外部以root身份login到服务器。 这可以防止其他容器(或主机)连接到数据库(使用根证书)。 您可以使用标志MYSQL_ROOT_HOST来传递允许使用根证书连接到服务器的容器或主机的IP。 例如。 要允许主机连接,您可以设置MYSQL_ROOT_HOST="172.17.0.1 ”。

另外我看到你只创buildroot用户,但是在连接string中使用userid=user 。 您可以使用server=127.0.0.1作为主机名。

本地主机是在每个容器内,它不会工作。 尝试连接使用db作为主机名,端口3306