verwendetes Datenbanksystem: SQL Server
Hallo,
ich habe eine Entwicklungsumgebung vorliegen, bei der ein Docker-Image erstellt wird und in einem Docker-Container läuft. Das Image ist ein mssql-Image und dort wird eine DB inklusive Seeding und Migration erstellt.
Nun würde ich gerne von meinem Host über SQL Server Management Studio (SSMS) auf diese Datenbank zugreifen. Der ConnectionString für die DB beinhaltet
Data Source=localhost
sowie eine User ID und ein Passwort.
Versuche ich nun über SSMS diese Credentials (SQL Authentifizierung) einzugeben und trage als Servername "localhost" ein, bekomme ich einen Fehler:
"Fehler bei der Anmeldung für den Benutzer "sa" (Microsoft SQL Server, Fehler: 18456)"
Verwende ich statt der SQL Auth Methode die Windows Auth Methode, dann komme ich auf meine localhost Datenbank, allerdings ist dies nicht die DB aus dem Docker.
Hat jemand eine Idee, wie ich auf die Docker DB zugreifen kann? Leider kann ich an der docker-Datei nichts ändern.
Von Deinem Host auf den Docker Container zugreifen ist einfach:
Container muss nen Port gesetzt haben und dann kannst über Localhost zugreifen (ohne Port gehts nicht).
Ich erstell diesen so:
docker create --name mssql -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=P4ssword" -p 31000:1433 -d <imagename>
Dann kann ich auf Docker for Desktop über localhost,31000
zugreifen.
Container zu Container Kommunikation (sofern Du das brauchst) musst extra einrichten.
Localhost geht dann als Adresse natürlich nicht, weil Du die interne Container-IP brauchst, weil es dann nicht mehr über den Ingress geht.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ok, ich probiere es mal. Ich hoffe mal, dass die anderen Services dann dennoch auf die Datenbank zugreifen können 😄
Danke schon mal.
Edit: Super, hat einwandfrei funktioniert! Jetzt kann ich mich auch über SSMS einloggen und die Applikation läuft dennoch ganz normal, macht ja aber auch Sinn, weil die 31000 nur von Docker aus "exposed" wird und intern immer noch die 1433 genutzt wird.