Aprenda a usar Docker para empaquetar e implementar sus aplicaciones Go de manera eficiente, haciéndolas portátiles y fáciles de administrar.

Docker es la tecnología de contenedorización más popular debido a su simplicidad y facilidad de uso. Docker alivia el estrés de los problemas de portabilidad en el desarrollo y la distribución de software. Puede implementar sus contenedores docker en la mayoría de los proveedores de servicios en la nube.

Contenerizar sus aplicaciones Go con Docker puede ayudarlo a garantizar una implementación consistente y confiable en diferentes entornos. Puede implementar sus aplicaciones Go en diferentes entornos, como desarrollo, preparación y producción. Los contenedores Docker son livianos y ocupan menos espacio que las máquinas virtuales tradicionales. Esto puede ahorrarle dinero en costos de alojamiento y también puede hacer que sus implementaciones sean más rápidas.

Configuración de un servidor web simple en Go

La biblioteca estándar de Go contiene los paquetes que necesitará para configurar un servidor web simple.

instagram viewer

Primero, importa el http, registro, y json paquetes usarás Paquete http de Go configurar el servidor y CONSEGUIR solicitar punto final. El registro paquete para registrar posibles errores en su consola. El paquete json para codificar una estructura a JSON para el punto final de la API.

importar (
"codificación/json"
"registro"
"red/http"
)

Puede codificar una instancia de estructura como JSON para el cliente como respuesta en función de la validez de la solicitud de la siguiente manera:

tipo Mensaje estructura {
Respuesta cadena`json:"respuesta"`
Descripción cadena`json:"descripción"`
}

La función del controlador devolvería un mensaje exitoso al cliente si la solicitud al punto final es un CONSEGUIR pedido.

// dockerTestEndpoint maneja el extremo de la API para probar la conectividad de Docker
funcióndockerTestEndpoint(escritor http. ResponseWriter, solicitud *http. Pedido) {

// Establecer el encabezado de respuesta para indicar contenido JSON
escritor. Encabezado().Conjunto("Tipo de contenido,""aplicación/json")

// Si el método de solicitud es GET
si pedido. Método == "CONSEGUIR" {

// Establecer el código de estado de respuesta en 200 OK
escritor. WriteHeader (http. EstadoOK)

// Crear una estructura de mensaje para una respuesta exitosa
mensaje := Mensaje{
Respuesta: "Exitoso",
Descripción: "Has alcanzado con éxito el punto final de la API" +
"Desde su contenedor Docker",
}
// Codificar el mensaje como JSON y enviarlo como respuesta
error: = json. NewEncoder (escritor).Codificar(&mensaje)
si error! = nulo {
devolver
}
} demás {

// Si el método de solicitud no es GET
// Establecer el código de estado de respuesta en 400 Bad Request
escritor. WriteHeader (http. EstadoBadRequest)

// Crear una estructura de mensaje para una respuesta de solicitud incorrecta
mensaje := Mensaje{
Respuesta: "Solicitud incorrecta",
Descripción: "Has alcanzado con éxito el punto final de la API desde tu " +
"Docker Container, pero hiciste una mala solicitud",
}

// Codificar el mensaje como JSON y enviarlo como respuesta
error: = json. NewEncoder (escritor).Codificar(&mensaje)
si error! = nulo {
devolver
}
}
}

Configura la función del controlador en la función principal con la ruta como /api/docker/go. El dockerTestEndpoint La función del controlador valida que la solicitud al controlador es una solicitud GET. Si es una solicitud GET, codifica una instancia Mensaje instancia de estructura al cliente en función del estado de la solicitud.

Así es como puede montar la función de controlador en una ruta y configurar el servidor para que se ejecute en el puerto 8080:

funciónprincipal() {
// Registrar la función del controlador 'dockerTestEndpoint'
// para gestionar las solicitudes de la URL "/api/docker/go".
http. ManejarFunc("/api/docker/ir", dockerTestEndpoint)

// Inicie el servidor HTTP y escuche las solicitudes entrantes en el puerto 8080.
error := http. escucharyservir(":8080", nulo)
si error! = nulo {
registro. Fatalln("Hay un error con el servidor:", errar)
}
}

El principal La función es el punto de entrada del servidor, que escucha en el puerto. 8080. El HandleFunc El método monta las rutas en la función del controlador. El escucharyservir El método inicia el servidor en el puerto de host local especificado 8080.

Introducción a la creación de contenedores de sus aplicaciones Go con Docker

Después de instalar y configurar Docker, necesitará un archivo de Docker llamado Dockerfile para crear y crear una imagen de Docker para su aplicación Go. Especificará comandos para la imagen base y comandos para copiar los archivos, agregar el directorio de trabajo y ejecutar la aplicación en Dockerfile.

Ejecute este comando en la terminal de su espacio de trabajo para crear un Dockerfile.

toque Dockerfile

Especificará los comandos para construir su imagen de Docker en el Dockerfile.

Si hay archivos que desea separar de su imagen de Docker, puede usar un .dockerignore archivo. El .dockerignore los archivos funcionan exactamente como .gitignore archivos

toque .dockerignore

A continuación, especificará los comandos de compilación en su Dockerfile para contener sus aplicaciones.

Definición de comandos en el Dockerfile

Los Dockerfiles se pueden personalizar según las especificaciones de su proyecto. Definirá comandos para construir la imagen base para construir la aplicación.

Aquí hay un ejemplo del contenido de un Dockerfile que construye el servidor web anterior:

# Usar una imagen base de Golang
DE golang: último

# Establecer el directorio de trabajo dentro del contenedor
DIR.TRABAJO /app

# Copia todos los archivos en el directorio local al directorio de trabajo en el contenedor
COPIAR. .

# Descargue las dependencias del módulo Go
CORRER ir a descargar mod

# Cree la aplicación Go
CORRER ir a construir -o aplicación

# Establecer el punto de entrada para la aplicación
PUNTO DE ENTRADA ["./aplicación"]

El Dockerfile utiliza golang: último imagen base, para compilar la aplicación después de configurar el directorio de trabajo en /app.

El Dockerfile copia los archivos con el COPIAR comando y descarga dependencias con el CORRER dominio.

El archivo especifica una operación de compilación y ejecución con el CORRER luego configura el comando para que se ejecute cuando el contenedor comience con el CMD dominio.

Guarde el Dockerfile en el mismo directorio que su ir.mod y principal.ir archivos; luego ejecute este comando para crear una imagen de Docker a partir de este Dockerfile:

docker build -t GolangTutorial.

El comando anterior creará una imagen de Docker con la etiqueta golangtutorial. Puede ejecutar un contenedor con este comando:

docker run -p 8080:8080 golangtutorial

El comando asigna el puerto 8080 del contenedor al puerto 8080 en el host local de la máquina host. Puede solicitar el servidor que se ejecuta en el contenedor Docker desde la máquina host.

Aquí está el resultado de enviando la solicitud CURL al servidor, esta vez ejecutándose en Docker:

Puede usar Docker Compose para la orquestación de contenedores

Docker Compose es una herramienta que puede usar para orquestar (trabajar con muchos) contenedores Docker. Docker Compose le permite definir una aplicación de varios contenedores en un solo archivo YAML. Puede ejecutar y administrar toda la aplicación con un solo comando.

Puede usar Docker Compose para implementar y administrar aplicaciones complejas en contenedores. Docker Compose simplifica la administración con implementaciones automatizadas y consistentes.