docker - 无法连接到 compose 中的容器,但主机连接有效
问题描述
使用 docker 撰写文件
version: '3'
services:
sqlserver:
image: microsoft/mssql-server-linux:2017-latest
ports:
- 1401:1433
volumes:
- ./db:/tmp/data
environment:
- ACCEPT_EULA=Y
- "MSSQL_SA_PASSWORD='Password99'"
command:
- /tmp/data/run.sh
api:
build:
context: .
dockerfile: dockerfile
depends_on:
- sqlserver
links:
- sqlserver
ports:
- 5000:80
使用 appsettings.json 连接字符串:
"ConnectionStrings": {
"Entities": "data source=(local),1401;initial catalog=DB_Test;user id=sa;password=Password99;enlist=False;multipleactiveresultsets=True;connect timeout=30;App=EntityFramework"
},
我得到错误
api_1 | System.Data.SqlClient.SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:TCP 提供者,错误:40 - 无法打开与 SQL Server 的连接)
从运行 api 实例的主机到在 docker-compose 中运行的 sql server 实例的连接工作正常,因此在容器中运行的 SQL 实例很好。
任何人都可以帮助 docker 内的 api 和 sql 之间的连接吗?
谢谢!
解决方案
在 docker 内部,数据库的主机名将是“sqlserver”而不是 localhost 或 127.0.0.1
推荐阅读
- angular - ngOnInit() 方法没有按预期工作
- java - 小数点分隔符在后台被删除
- mysql - Laravel MySql 获得球员参加比赛
- javascript - 无法在所有图像上设置相同的宽度和高度
- android - GTM(firebase)跟踪android中的应用程序打开事件和活动
- mysql - 来自mysql json数据的grafana时间序列图
- android - Android textview 奇怪的行为:焦点更改时自动滚动到顶部
- npm - 确保 NPM 开发依赖项匹配相应的对等依赖项
- javascript - 如何将猫鼬查询的结果保存到 javascript 变量中?
- matlab - Matlab 中不显示希腊语单词