Lösung: Microsoft SQL Server
Vollständige docker-compose.yml
Abschnitt betitelt „Vollständige docker-compose.yml“Standard (Intel/AMD)
Abschnitt betitelt „Standard (Intel/AMD)“services: mssql: image: mcr.microsoft.com/mssql/server:2022-latest container_name: mssql-lab restart: unless-stopped environment: ACCEPT_EULA: "Y" MSSQL_SA_PASSWORD: "YourStrong@Passw0rd" MSSQL_PID: "Developer" ports: - "1433:1433" volumes: - mssql_data:/var/opt/mssql
volumes: mssql_data:Apple Silicon (M1/M2/M3)
Abschnitt betitelt „Apple Silicon (M1/M2/M3)“services: mssql: image: mcr.microsoft.com/azure-sql-edge:latest container_name: mssql-lab restart: unless-stopped environment: ACCEPT_EULA: "Y" MSSQL_SA_PASSWORD: "YourStrong@Passw0rd" ports: - "1433:1433" volumes: - mssql_data:/var/opt/mssql
volumes: mssql_data:Erwartete Ausgaben
Abschnitt betitelt „Erwartete Ausgaben“Container starten
Abschnitt betitelt „Container starten“$ docker compose up -d[+] Running 2/2 ✔ Network docker-lab_default Created ✔ Container mssql-lab StartedLogs prüfen
Abschnitt betitelt „Logs prüfen“$ docker compose logs mssql...SQL Server is now ready for client connections. This is an informational message; no user action is required.Version abfragen
Abschnitt betitelt „Version abfragen“$ docker exec -it mssql-lab /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U sa -P "YourStrong@Passw0rd" \ -C -Q "SELECT @@VERSION"
Microsoft SQL Server 2022 (RTM-CU12)...SQL-Befehle und Ausgaben
Abschnitt betitelt „SQL-Befehle und Ausgaben“-- Datenbank erstellen1> CREATE DATABASE StudentDB;2> GO
-- Zur Datenbank wechseln1> USE StudentDB;2> GOChanged database context to 'StudentDB'.
-- Tabelle erstellen1> CREATE TABLE Courses (2> CourseID INT IDENTITY(1,1) PRIMARY KEY,3> CourseName NVARCHAR(100) NOT NULL,4> Credits INT,5> CreatedAt DATETIME DEFAULT GETDATE()6> );7> GO
-- Daten einfügen1> INSERT INTO Courses (CourseName, Credits) VALUES2> ('Datenbanken', 5),3> ('IT Security', 4),4> ('Netzwerke', 4);5> GO(3 rows affected)
-- Daten abfragen1> SELECT * FROM Courses;2> GOCourseID CourseName Credits CreatedAt----------- -------------------- ----------- ----------------------- 1 Datenbanken 5 2024-03-10 14:45:00.000 2 IT Security 4 2024-03-10 14:45:00.000 3 Netzwerke 4 2024-03-10 14:45:00.000(3 rows affected)Antworten auf Reflexionsfragen
Abschnitt betitelt „Antworten auf Reflexionsfragen“1. Unterschied Developer vs. Express Edition
Abschnitt betitelt „1. Unterschied Developer vs. Express Edition“| Feature | Developer | Express |
|---|---|---|
| Kosten | Kostenlos (nur Entwicklung) | Kostenlos (auch Produktion) |
| Max. DB-Grösse | Unbegrenzt | 10 GB |
| Max. RAM | Unbegrenzt | 1 GB |
| CPU-Kerne | Unbegrenzt | 4 |
| Features | Alle Enterprise-Features | Eingeschränkt |
Developer Edition = Enterprise Edition, aber nur für Entwicklung/Test lizenziert.
2. Warum ACCEPT_EULA?
Abschnitt betitelt „2. Warum ACCEPT_EULA?“Microsoft verlangt, dass Benutzer die Lizenzbedingungen (End User License Agreement) akzeptieren. Ohne ACCEPT_EULA: "Y" startet der Container nicht.
This container is running SQL Server. By continuing you are accepting the End User License Agreement.3. Container-Logs überwachen
Abschnitt betitelt „3. Container-Logs überwachen“# Einmalig anzeigendocker compose logs mssql
# Live verfolgendocker compose logs -f mssql
# Letzte 100 Zeilendocker compose logs --tail 100 mssql
# Mit Zeitstempeldocker compose logs -t mssql4. Vor- und Nachteile containerisierter Datenbanken
Abschnitt betitelt „4. Vor- und Nachteile containerisierter Datenbanken“Vorteile:
- Schnelle Einrichtung (Minuten statt Stunden)
- Isolierte Umgebungen
- Einfach verschiedene Versionen testen
- Reproduzierbar auf allen Rechnern
- Einfaches Aufräumen
Nachteile:
- Performance-Overhead (meist minimal)
- Komplexere Backup-Strategien
- Nicht für Produktionseinsatz bei kritischen Daten empfohlen
- Speicherverbrauch durch Images
Kombinierte Lösung (MySQL + MSSQL)
Abschnitt betitelt „Kombinierte Lösung (MySQL + MSSQL)“services: mysql: image: mysql:8.0 container_name: mysql-lab restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: testdb MYSQL_USER: student MYSQL_PASSWORD: studentpass ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql
mssql: image: mcr.microsoft.com/mssql/server:2022-latest container_name: mssql-lab restart: unless-stopped environment: ACCEPT_EULA: "Y" MSSQL_SA_PASSWORD: "YourStrong@Passw0rd" MSSQL_PID: "Developer" ports: - "1433:1433" volumes: - mssql_data:/var/opt/mssql
volumes: mysql_data: mssql_data:Beide Container verwalten
Abschnitt betitelt „Beide Container verwalten“# Beide startendocker compose up -d
# Status beider Containerdocker compose ps
# Logs beider Containerdocker compose logs
# Beide stoppendocker compose down