sql >> Database >  >> RDS >> Sqlserver

Een aangepaste SQL Server Docker-afbeelding maken bovenop de officiële afbeelding

Hallo mensen, laten we vandaag bespreken hoe we onze eigen aangepaste SQL Server-afbeelding bovenop de officiële afbeelding kunnen maken.

Dit kan erg handig zijn in meerdere scenario's, zoals wanneer een nieuw teamlid zich bij ons team voegt. In plaats van ze een nieuw exemplaar van SQL Server te geven, kunnen we een afbeelding hebben van de initiële installatie en ze kunnen het gewoon trekken en klaar zijn om eraan te werken

Voorwaarde

  • Docker Desktop actief op de machine. Kan hier worden gedownload https://docs.docker.com/v17.09/docker-for-windows/install/
  • Account op Docker Hub zodat we onze aangepaste Sql Server-docker-image kunnen publiceren en vervolgens ophalen
  • Lopende instantie van een nieuwe SQL Server-container van de officiële afbeelding die beschikbaar is op docker-hub mcr.microsoft.com/mssql/server:2017-latest.
docker run -e "ACCEPT_EULA=Y" "SA_PASSWORD=MYPASSWORD123" -p 1433:1433 --name MyContainerName -d mcr.microsoft.com/mssql/server:2017-latest

De SQL Server instellen 🔥

  • Zodra we de server in gebruik hebben, logt u in op de SQL Server met behulp van SQL Server Management Studio met het IP-adres van de host
  • Gebruikersnaam is SU en wachtwoord is MYPASSWORD123 zoals gebruikt in de bovenstaande opdracht om de container uit te voeren
  • Vervolgens kunnen we onze server instellen zoals de database, tabellen handmatig of met behulp van een back-upbestand, enz.
  • Nu hebben we onze database op zijn plaats en we willen een afbeelding van deze opstelling maken, zodat wanneer iemand de volgende keer de afbeelding trekt, ze de database niet meer handmatig hoeven te importeren

Aangepaste Docker-afbeelding maken

  • Stop eerst de actieve container met het commando
docker stop MyContainerName
  • Vervolgens pushen we onze wijzigingen naar de container zodat we er een afbeelding van kunnen maken
docker commit MyContainerName
  • Kopieer vervolgens de afbeelding van onze specifieke container uit de lijst met het commando
Docker images
  • De nieuw gemaakte afbeelding heeft geen repository en tag. Voer de volgende opdracht uit om de afbeelding te taggen
docker tag <imageID> <docker-hub-username>/<docker-hub-repository-name>:<tag-name>

Bijvoorbeeld:docker-tag a82e969d1395 rajatsrivas/ myownsql:sqlCustomImage

  • Nu is onze afbeelding gebouwd en kunnen we een container maken met behulp van de afbeelding
docker run -p 1433:1433 --name sqlCustomImage -d rajatsrivas/ myownsql
  • Als u bent aangemeld bij Docker Hub op de lokale Docker Desktop, wordt deze stap overgeslagen, anders logt u in met de opdrachtprompt

docker login -username=rajatsrivas

  • Voer het wachtwoord in op de volgende regel en duw de afbeelding tot slot naar de opslagplaats van de docker-hub

docker push rajatsrivas/myownsql

  • Ga naar https://hub.docker.com/
  • We zouden de afbeelding moeten hebben die we naar de docker-hub hebben gepusht

Trek en voer onze aangepaste afbeelding uit 🏃‍♂️

  • Trek de afbeelding naar een willekeurige machine met het commando

docker pull rajatsrivas/myownsql:latest

  • Voer de container uit en krijg toegang tot de server op het SSMS. De server moet de database hebben die is geïmporteerd en ingesteld in de eerdere stappen
docker run -p 1433:1433 --name <container-name> -d rajatsrivas/myownsql:latest

Conclusie

Dus daar is het dan dat we onze aangepaste afbeelding hebben geïmplementeerd bovenop een officiële beschikbare docker-afbeelding.

Dit is een vrij kleine stap in de onboarding, maar je kunt vergelijkbare implementaties gebruiken om sandbox-omgevingen zeer snel en efficiënt op te zetten.

Hoop dat dit nuttig was. Blijf leren, blijf bouwen


  1. Dagen aan een datum toevoegen in MySQL

  2. Voeg de tweede kolomwaarde samen als de eerste kolomwaarde hetzelfde is

  3. Hoe haal ik het eerste en laatste record van een gegroepeerd record op in een MySQL-query met geaggregeerde functies?

  4. Fatale fout:niet-gevangen uitzondering 'mysqli_sql_exception' met bericht 'Geen index gebruikt in query/voorbereide instructie'