Aplicación Golang para ejecutarse como contenedor Docker

Aplicacion Golang Para Ejecutarse Como Contenedor Docker



En este tutorial, aprenderemos los conceptos básicos de la creación de contenedores configurando una aplicación Golang para que se ejecute como un contenedor Docker. Aprenderemos a trabajar con un Dockerfile para configurar todos los requisitos de nuestra aplicación.

Go es un lenguaje de programación compilado, tipado estáticamente y de código abierto que es reconocido por su capacidad para facilitar el desarrollo de un software simple, confiable y altamente eficiente. Encuentra su utilidad en la creación de diversas aplicaciones, incluidas aplicaciones web, soluciones nativas de la nube, interfaces de línea de comandos (CLI) y, curiosamente, incluso el propio Docker está diseñado con Go.

En nuestro caso, construimos un servidor HTTP simple en Go que nos permite demostrar cómo construir y Dockerizar la aplicación en pasos simples.







Requisitos:

Para seguir este tutorial, necesita las siguientes herramientas:



  1. Compilador Go instalado (se requiere la versión 1.21 y superior)
  2. Ejecutando Docker Engine en su máquina host
  3. Un IDE o editor de texto para editar la aplicación Go. Recomendamos utilizar Visual Studio o Vim.
  4. Un intérprete de línea de comandos como Bash, ZSH, PowerShell, etc.

Una vez cumplidos los requisitos dados, procedamos y aprendamos cómo crear la aplicación.



Construyendo la aplicación

El siguiente paso es construir nuestra aplicación. En nuestro caso, construimos un servidor HTTP simple que responde con un mensaje simple.





Comience creando un directorio para almacenar el proyecto Go. Puede proporcionar cualquier nombre adecuado.

$ mkdir ir_servidor

Navegue hasta el directorio y cree un nuevo archivo para almacenar el código fuente. En nuestro caso, llamamos al archivo 'main.go', lo que indica que el archivo es un código fuente de Go.



$ tocar principal.go

Finalmente, edite el archivo y agregue el código fuente a la aplicación como se muestra a continuación:

paquete principal

importar (
    'fmt'
    'red/http'
)

función principal ( ) {
    // manejar solicitudes entrantes
http.HandleFunc ( '/' , función ( En http.ResponseWriter,r * http.Solicitud ) {
        // Escribe una respuesta al cliente.
fmt.Fprintf ( En , 'Desde Docker (:' )
    } )

    // Inicie el servidor HTTP en el puerto 8080
fmt.Println ( 'El servidor se está ejecutando en: 8080' )
http.ListenAndServe ( ':8080' , nulo )
}

La aplicación anterior crea un servidor HTTP básico que se vincula al puerto 8080. El servidor responde con un mensaje básico como se definió anteriormente.

Probar la aplicación

Antes de acoplar la aplicación, asegurémonos de que la aplicación esté funcionando correctamente. Ejecute el siguiente comando:

$ ve a ejecutar main.go

El comando anterior inicia la aplicación y devuelve el mensaje siguiente:

El servidor se está ejecutando en: 8080

A continuación, para probar el servidor HTTP, puede ejecutar el comando 'curl' de la siguiente manera:

$ rizo http: // servidor local: 8080 /

El comando anterior debería devolver el mensaje de la siguiente manera:

Desde Docker ( : %

Ahora podemos continuar y acoplar la aplicación anterior como se define en los siguientes pasos.

Contenedor de la aplicación

El siguiente paso es discutir cómo construir un contenedor para la aplicación. Comenzamos creando el Dockerfile en el directorio del proyecto.

$ cd ir_servidor

Cree un archivo llamado Dockerfile sin ninguna extensión y edítelo con un editor de texto. Este archivo nos permite definir todos los requisitos para nuestra aplicación de la siguiente manera:

$ tocar archivo acoplable
$ porque archivo acoplable

Agregue la configuración de la siguiente manera:

DE golang: 1.21

DIRTRABAJO / aplicación

COPIAR . .

EJECUTAR ir a construir main.go -O principal .

EXPONER 8080

CMD [ './principal' ]

En el Dockerfile anterior, definimos las operaciones previas para la aplicación.

  • Establezca la imagen base en la imagen oficial de Golang versión 1.21.
  • Configure el directorio de trabajo dentro del contenedor en '/app'.
  • Copiamos todo el directorio del proyecto en el contenedor.
  • Cree la aplicación Go dentro del contenedor.
  • Exponga el puerto 8080 para permitir el tráfico HTTP entrante.
  • Configure el comando para ejecutar la aplicación Go.

Construyendo la imagen de Docker

Para crear la imagen para la aplicación, abra la terminal y navegue hasta el directorio del proyecto. A continuación, ejecute el siguiente comando para crear la imagen:

$ sudo construcción de ventana acoplable -t go_server_docker.

Reemplace go_server_docker con el nombre que desea asignar a la imagen de la aplicación.

Después de crear con éxito la imagen de Docker, puede ejecutar un contenedor basado en esa imagen con el siguiente comando:

$ ejecución de la ventana acoplable -pag 8080 : 8080 go_server_docker

El comando anterior debería asignar el puerto 8080 de la máquina host al puerto 8080 dentro del contenedor.

Para probar el contenedor, ejecute el siguiente comando:

$ rizo http: // servidor local: 8080

Esto debería imprimir el mensaje que está definido en la aplicación.

Conclusión

En este tutorial, aprendimos cómo crear una aplicación Go básica. También aprendimos cómo contener la aplicación definiendo los requisitos en Dockerfile, creando la imagen desde el contenedor y ejecutando el contenedor desde la imagen.