我有一个简单的docker-compose.yml
,其中仅包含两个服务,my-api
和sql-server
。
version: '3.0'
services:
sql-server:
image: mcr.microsoft.com/mssql/server:2019-latest
hostname: sql-server
container_name: sql-server
ports:
- "1433:1433"
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=MyPassword01*
- MSSQL_PID=Express
my-api:
ports:
- "8080:5000"
depends_on:
- sql-server
... ommited for clarity
当我docker-compose up --build容器准备好时(我可以通过docker ps进行验证)
a7a47b89a17a mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm…" 12 minutes ago Up 11 minutes 0.0.0.0:1433->1433/tcp sql-server
但是我无法使用SSMS访问SQL Server。
SSMS登录窗口:
localhost,1433
sa
MyPassword01*
错误:
无法连接到localhost,1433。
用户“ sa”的登录失败。 (.Net SqlClient数据提供程序)
PS:我也尝试过
sql-server,1433
但仍然无法访问
答案 0 :(得分:0)
执行以下代码,该代码将显示公共ipaddress。 代替本地主机使用此ipaddress
docker inspect -f“ {{range .NetworkSettings.Networks}} {{。IPAddress}} {{end}}” mssqltrek-con1。
我点击了以下链接以实现相同的目的。
https://www.sqlshack.com/sql-server-with-a-docker-container-on-windows-server-2016/
答案 1 :(得分:0)
我想您必须进一步调试。我猜您可以做的第一件事是打开容器内的bash,然后尝试从容器连接到SQL数据库。
docker exec -it sql-server "bash"
一旦进入容器bash,然后与sqlcmd连接,
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<YourNewStrong@Passw0rd>"
如果您无法在容器内部进行连接,则在设置SQL Server时,我必须假定您的SA密码有所不同。但是,如果这不是问题,则意味着您可以连接到容器内的SQL Server,然后可以放心,计算机上端口1433上的SSMS出了点问题。确保服务器名称正确。