【发布时间】:2020-03-26 00:03:34
【问题描述】:
我在 docker 容器中运行的 dotnet 核心应用程序需要通过其 IP 连接到一些外部服务,其中一个是在谷歌云上托管的远程服务器上单独运行的 sql 数据库。应用程序在不使用 docker 运行时运行没有问题,但是使用 docker 会失败并显示
An error occurred using the connection to database 'PartnersDb' on server '30.xx.xx.xx,39876'.
fail: Microsoft.EntityFrameworkCore.Update[10000]
An exception occurred in the database while saving changes for context type 'Partners.Api.Infrastructure.Persistence.MoneyTransferDbContext'.
System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled conn
ections were in use and max pool size was reached.
我的 Docker 撰写文件如下所示
version: "3.5"
networks:
my-network:
name: my_network
services:
partners:
image: partners.api:latest
container_name: partners
build:
context: ./
restart: always
ports:
- "8081:80"
environment:
- ASPNETCORE_ENVIRONMENT=Docker
- ConnectionStrings:DefaultConnection=Server=30.xx.xx.xx,39876;Database=PartnersDb;User Id=don;Password=Passwor123$$
networks:
- my-network
volumes:
- /Users/mine/Desktop/logs:/logs
我有
- bin 被撞到正在运行的容器中,我可以运行 ping 到 远程sql数据库服务器
- 我还可以远程登录到 数据库端口上的远程 sql 数据库服务器
但是,当我执行 docker-compose up 时出现问题,然后出现上述错误。 Docker 版本 19.03.5,构建 633a0ea 正在 MacOS Mojave 10.14.6 上运行
现阶段我真的不知道该怎么办。
【问题讨论】:
-
这篇关于超级用户的帖子可能对superuser.com/questions/1286281/…有帮助
-
@SeanMorris 我已经在用户定义的网桥网络上运行,即使我剥离了它并使用链接中建议的默认网桥,它仍然无法正常工作。
-
当你运行容器并成功访问服务时,你使用的是
docker run还是docker-compose run? -
@SeanMorris 使用 docker run 和 docker-compose up 并将 shell 附加到容器,我可以 ping 和 telnet 到远程服务。但应用本身无法连接。
标签: docker .net-core docker-compose docker-networking