0% encontró este documento útil (0 votos)
32 vistas7 páginas

Docker Compose para SQL Server en Linux ASP - Net Core Master

Cargado por

vitry
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
32 vistas7 páginas

Docker Compose para SQL Server en Linux ASP - Net Core Master

Cargado por

vitry
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Docker Compose para SQL Server en Linux | ASP.NET Core Master https://aspnetcoremaster.com/slqserver/docker-compose-para-sql-server.

html

ASP.NET Core Master YouTube Libro

Examen de Práctica AZ-900 Azure Fundamentals. ¡En español!

Docker Compose para SQL Server en


Linux
Apr 9, 2020

Hola qué tal en este articulo les voy a mostrar cómo ejecutar un contenedor de Docker para
SQL Server usando Docker Compose básicamente esta forma de ejecutar SQL Server es de
utilidad en en entornos de pruebas de desarrollo. La idea surgió después de ver un vídeo del
Pelado Nerd en el qué crea un archivo Docker Compose para una instancia de Wordpress con
MySQL mientras estaba viendo y me dije bueno yo puedo hacer algo similar con SQL Server y
ASP.NET Core me ayudará para mis pruebas personales.

Como tal lo primero que quiero sepas es que las imágenes de SQL Server para Linux se
encuentran en el Docker Hub. Puedes obtener las imágenes con el comando docker pull
mcr.microsoft.com/mssql/server:2019-latest donde se especifica la última version
del contenedor de SQL Server al momento de escribir este articulo. Debes notar que la ultima
version siempre está etiquetada con el año de la edición seguida de la leyenda latest por
ejemplo : mcr.microsoft.com/mssql/server:2017-latest o
mcr.microsoft.com/mssql/server:2019-latest . En el caso de que tú quieres
requieres otra imagen en específico por acá está la tabla de todas las etiquetas que puedes
usar:

SQL Server en un contenedor Docker


Una cosa importante que incluye el Docker Hub son ejemplos de cómo ejecutar el
contenedor para SQL Server. Básicamente utilizan el comando

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourStrong(!)Password' -p 1433:1433

En este comando se esta especificando las variables de entorno ACCEPT_EULA


,SA_PASSWORD y MSSQL_PID están sirven para aceptar la licencia de SQL Server, definir el
password del usuario sa y definir la edición que usara el contenedor.

1 de 7 23/02/2022, 13:08
Docker Compose para SQL Server en Linux | ASP.NET Core Master https://aspnetcoremaster.com/slqserver/docker-compose-para-sql-server.html

Debes tener en cuenta los requerimientos mínimos que necesita SQL Server. Se necesitan por
lo menos 2GB para las versiones más recientes y 3GB para las versiones anteriores.

Las ediciones disponibles de SQL Server disponibles son la de Developer, Express, Standard,
Enterprise y la Enterprise Core.

SQL Server en un Docker Compose


Bueno pues sin más detalles pasamos usar Docker Compose, básicamente este usa las
mismas opciones que ejecutar docker de la forma tradicional con la linea de comandos
docker run pero como tienes tantas opciones lo que hace realmente difícil o casi
imposible aprendérselo de memoria.

Cuando vi la opción del Docker Compose me atrajo por el hecho de que puedes agregarlo a
un repositorio con control de código fuente y puedes reutilizarlo en varios entornos ya que
todo lo necesario esta en el archivo llamado docker-compose.yml . Este archivo define
todas las opciones para crear el contenedor.

Observa que se esta usando la etiqueta específica de la imagen de Docker.Es recomendable


siempre ser muy explícito en la versión que quieres para la imagen de Docker y asi evitar que
actualizaciones puedan generar problemas en tú código o tengas que estar constantemente
descargando la imagen más nueva porque ya cambio.

version: "3.1"

services:
sqlserver:
image: mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04
user: '0:0'
container_name: sqlserver2019
ports:
- 1433:1433
environment:
ACCEPT_EULA: Y
SA_PASSWORD: PasswordO1.
MSSQL_PID: Express
volumes:
- ~/docker/sqlserver-data:/var/opt/mssql

• Especifica la imagen de SQL Server : mcr.microsoft.com/mssql/server:2019-CU3-


ubuntu-18.04

2 de 7 23/02/2022, 13:08
Docker Compose para SQL Server en Linux | ASP.NET Core Master https://aspnetcoremaster.com/slqserver/docker-compose-para-sql-server.html

• Específica al usuario: en este caso estamos usando el usuario de root


• Define el nombre que le se asignara al contenedor : sqlserver2019
• Define los puertos a redireccionar : es decir el puerto del host lo va a redireccionar al
puerto del contenedor como pueden ver este es el puerto estándar que usa SQL Server.
• Especifica los valores de las variables de entorno.
• Define una volumen de Docker.

Es una mala práctica usar el usuario root en un contenedor. Lo estoy usando asi porque es
como la forma que logré hacerlo funcionar porque ya que he tenido varias problemas para
iniciarlos si usuario root.

El el punto de la definición del volumen es donde me ha costado más trabajo hacerlo


funcionar porque es necesario definir los permisos para la carpeta. Al definir el volumen lo le
decimos a Docker es que persitan los datos después de que el contenedor puede ser
eliminado o creado o actualizado la idea es que en este caso ~/docker/sqlserver-data
es un directorio que está en máquina actual y /var/opt/mssql es el directorio que está
dentro de el contenedor que es la ruta que usa SQL Server para guardar los archivos .mdf y
ldf.

Para crear la carpeta que utilizaremos para el volumen ejecutamos los siguientes comandos:

mkdir ~/docker/sqlserver-data
sudo chgrp -R 0 ~/docker/sqlserver-data
sudo chmod -R g=u ~/docker/sqlserver-data

Una vez creado el volumen ya podemos ejecutar el contenedor usando Docker Compose.
Ubicate en el directorio donde se encuentra el archivo docker-compose.yml y ejecuta

docker-compose up -d

La opción -d sirve para especificar que el contenedor debe permanecer corriendo. Finalmente
podemos ver el contenedor esta corriendo con

docker ps

CONTAINER ID IMAGE COMMAN


c4b5ea35cf60 mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04 "/opt/

La salida de este comando nos dice el id del contenedor, los puertos, el nombre del
contenedor sqlserver2019, el tiempo que lleva corriendo.

3 de 7 23/02/2022, 13:08
Docker Compose para SQL Server en Linux | ASP.NET Core Master https://aspnetcoremaster.com/slqserver/docker-compose-para-sql-server.html

Conectarse SQL Server en un contenedor


Para diagnosticar problemas en el contenedor de SQL Server puedes usar la extensión d
Docker para Visual Studio Code. Esta te permite ver los contenedores corriendo actualmente
y también puedes ver los logs de la creación del contenedor que pueden ser muy útiles para
encontrar errores.

Para conectarte a SQL Server desde Visual Studio Code se puedes usar la extensión mssql . El
proceso de instalación es muy sencillo. En su Visual Studio Code busca en las extensiones :
mssql y da clic en instalar.

Para conectarnos a SQL Server desde Visual Studio Code puedes crear un archivo .sql para
activar la extensión msssql en la parte inferior podemos dar clic donde indica del estado
disconnected para crear un nuevo perfil de conexión ingresando los datos definidos en el
archivo docker-compose.yml

4 de 7 23/02/2022, 13:08
Docker Compose para SQL Server en Linux | ASP.NET Core Master https://aspnetcoremaster.com/slqserver/docker-compose-para-sql-server.html

Parámetro Valor

hostname . o localhost

databasename master

Authentication Type Sql Login

usuario sa

Guardar Password Si

Perfil de conexión sqlserverdocker

Nos preguntara si queremos guardarla el perfil de conexión. La extensión de Visual Studio


Code mostrara en la parte inferior que ya esta conectado con los parámetros especificados.
Lo primero que haremos es verificar la versión de SQL Server para esto ejecutamos el
SELECT @@version que es una variable global que define la versión. Como les decía, este
fue inspirado en el vídeo del Pelado Nerd y como una forma de tributo creare una base de
datos llamada PeladoNerd y insertaremos unas de las frases que utiliza en uno de sus
vídeo en la tabla llamada Peladeces :

SELECT @@version;

5 de 7 23/02/2022, 13:08
Docker Compose para SQL Server en Linux | ASP.NET Core Master https://aspnetcoremaster.com/slqserver/docker-compose-para-sql-server.html

CREATE DATABASE PeladoNerd;


GO
USE PeladoNerd;
GO
CREATE TABLE Peladeces
(
Id INT NOT NULL PRIMARY KEY,
Nombre NVARCHAR(100) NOT NULL
);
GO
INSERT INTO Peladeces
VALUES (1, N'Copado Loco'),
(2,N'Soy Pelado y soy Nerd'),
(3,N'Saludos Nubecita');
GO
SELECT * FROM Peladeces;

USE master;
DROP DATABASE PeladoNerd;

Después de ejecutar estas sentencias SQL podemos revisar la nueva base de datos se
encuentre en la carpeta definida por el volumen:

Conclusión
Esta forma de usar SQL Server sirve para probar el concepto de Servicio en Docker Compose.
El comando que podemos usar para detener el contenedor es docker-compose down . La
ventaja de usar los volumen de Docker es que nuestras bases de datos quedan en la carpeta
local y podemos detiene y ejecutar el contenedor. Todo este escenario esta pensando
principalmente para entornos de desarollo y es un primer paso para pensar en entornos de
producción.

Este artículo es una transcripción con algunos ajustes del video. Si prefieres ver el video aquí
lo tienes. Hay material nuevo que no esta incluido en el blog.

6 de 7 23/02/2022, 13:08
Docker Compose para SQL Server en Linux | ASP.NET Core Master https://aspnetcoremaster.com/slqserver/docker-compose-para-sql-server.html

ASP.NET Core Master jahbenjah


benjamin-camacho-castro
Benjamin Camacho
jbenjamincc
benjamin@aspnetcoremaster.com
Benjamín Camacho

Compartir:

facebook twitter linkedin

7 de 7 23/02/2022, 13:08

También podría gustarte