GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo implementar un contenedor Docker en AWS Elastic Beanstalk

¿Necesita automatizar la implementación de contenedores Docker? ¿Ha oído hablar de AWS Elastic Beanstalk? AWS Elastic Beanstalk es otro excelente servicio para implementar y escalar aplicaciones y servicios web.

En este tutorial, aprenderá a implementar una aplicación en AWS Elastic Beanstalk mediante la CLI de EB y GitHub Actions.

¿Listo? ¡Siga leyendo y comience a escalar sus aplicaciones!

Requisitos

Este tutorial será una demostración práctica. Si desea seguirnos, asegúrese de tener lo siguiente:

  • Interfaz de línea de comandos (CLI) de AWS:este tutorial utiliza AWS CLI v2.
  • Usuario de AWS con permiso de Elastic Beanstalk.
  • CLI de EB v3.14.6 instalada
  • Una cuenta de GitHub y un repositorio de GitHub que ya está configurado.

Creación de un servidor web estático Docker

Para demostrar cómo implementar un contenedor Docker, primero necesitará implementar una aplicación. Y para esta demostración, utilizará un archivo HTML.

1. Ejecute el git clone Comando a continuación para clonar un archivo HTML desde un repositorio de GitHub.

git clone [email protected]:Adam-the-Automator/aws-elastic-beanstalk.git

2. A continuación, cree un Dockerfile con su editor de texto preferido en la raíz del repositorio que clonó (paso uno), y complete el archivo con el código a continuación.

El siguiente código muestra la salida del código HTML (index.html ).

# Get NGINX base image
FROM nginx 

# Add the index file to nginx
ADD index.html /usr/share/nginx/html/

# Expose port to enable elastic beanstalk and connect to the Docker container
EXPOSE 80

3. Ejecute la compilación docker build Comando a continuación para construir un contenedor Docker de su archivo HTML llamado html en el directorio de trabajo.

docker build -t html .

4. Ahora, ejecute docker run comando a continuación para ejecutar el contenedor Docker (html ) que construiste previamente (paso tres).

El --name marca le dice a Docker el nombre (justhtml ) para usar al hacer referencia al contenedor dentro de la red. Mientras que el -p flag mapea el puerto de su localhost (8080 ) al puerto del contenedor Docker (80 ).

docker run --name justhtml -p 8080:80 html

5. Finalmente, abra su navegador web y navegue hasta http://localhost:8080/ para verificar que puede acceder al contenedor Docker (HTML).

Si todo funciona bien, verá la página HTML que se muestra a continuación.

Implementación de la aplicación en Elastic Beanstalk a través de AWS CLI

Ha verificado que se puede acceder a su contenedor Docker en su host, por lo que es hora de implementar su aplicación en AWS Elastic Beanstalk. Utilizará la CLI de EB para implementar su contenedor Docker (html) en AWS Elastic Beanstalk.

Suponiendo que ya haya configurado la CLI de AWS, no necesita hacer nada para configurar la CLI de EB. ¿Por qué? La CLI de EB utiliza las mismas credenciales que la CLI de AWS.

1. Ejecute el eb init Comando a continuación para inicializar un entorno de Elastic Beanstalk para su proyecto. El entorno permite que Elastic Beanstalk identifique el tipo de aplicación que desea implementar.

eb init

Después de ejecutar el comando, recibirá un mensaje para completar los detalles. A continuación, se usaron las siguientes opciones para este ejemplo.

  • Región predeterminada: 3
  • Nombre de la aplicación: html
  • Parece que está utilizando Docker. ¿Es esto correcto? Y
  • Seleccione una sucursal de la plataforma: 1
  • ¿Desea continuar con CodeCommit? N
  • ¿Desea configurar SSH para sus instancias? N

2. A continuación, ejecute eb create Comando a continuación para crear un entorno para su aplicación en Elastic Beanstalk. Básicamente, implementa su aplicación y Elastic Beanstalk se encargará del resto como el equilibrio de carga

Si tiene Git inicializado en su proyecto, asegúrese de confirmar todos los cambios primero antes de crear una aplicación en Elastic Beanstalk. ¿Por qué? EB CLI usa el archivo Git de la confirmación más reciente.

eb create

Presione Entrar para usar el valor predeterminado para un Nombre de entorno , prefijo CNAME de DNS y tipo de equilibrador de carga ya que solo estás trabajando en una aplicación HTML.

Pero cuando se le solicite que habilite las solicitudes de Spot Fleet, escriba n , ya que esta opción proporciona instancias bajo demanda opcionales que no son necesarias aquí, y finalmente presione Entrar.

Un grupo de escalado automático se aprovisiona automáticamente cuando ejecuta por primera vez eb create comando.

Los activadores predeterminados se amplían cuando el tráfico de red saliente medio de cada instancia es superior a 6 MB y se reducen cuando el tráfico de red saliente es inferior a 2 MB durante un período de cinco minutos.

Como su aplicación es solo HTML, es poco probable que se active el escalado de la aplicación.

3. Finalmente, ejecute eb open Comando a continuación para abrir su aplicación en su navegador web predeterminado directamente desde Elastic Beanstalk.

eb open

Verificación de la aplicación AWS Elastic Beanstalk

Ahora que ha implementado su aplicación, verá todas las funciones útiles agregadas a su aplicación. Primero verificará dónde almacenó Elastic Beanstalk el archivo de la aplicación.

Para tener acceso al archivo de la aplicación:

1. Inicie sesión en la consola de AWS con el usuario agregado en la configuración de la CLI de AWS.

2. Haga clic en Todos Servicios desplegable, haz clic en Almacenamiento pestaña, luego seleccione S3 .

3. En el panel de S3, haga clic en su proyecto para ver la información de su aplicación.

Como se muestra a continuación, verá su aplicación en Objetos lista.

4. Finalmente, haga clic en el menú desplegable Todos los servicios y haga clic en la pestaña Calcular, luego seleccione EC2 para acceder al panel de control de EC2 .

En el panel de control de EC2, puede ver los recursos de EC2 que ejecutan su aplicación, similar al que se muestra a continuación. Pero tenga en cuenta que los datos a continuación pueden diferir de los suyos.

Además, puede ejecutar el estado eb status Comando a continuación para ver más detalles sobre su aplicación.

eb status

Actualización de una aplicación de AWS Elastic Beanstalk

Cuando se hayan realizado cambios en su aplicación, deberá ejecutar eb deploy el comando para crear e implementar otra versión de su aplicación.

Abra su archivo HTML (index.html ) y reemplaza lo que tienes en el <style> etiqueta con el de abajo. El siguiente código cambia el color de fondo de su aplicación.

<style>
    body{
        background-color: rgb(0, 255, 55);
    }
</style>

Ahora, ejecute los siguientes comandos para deploy los cambios y open su aplicación en su navegador web.

eb deploy
eb open

Cuando se completa la implementación, su aplicación se abre automáticamente en su navegador con los nuevos cambios que realizó.

Implementación de aplicaciones en Elastic Beanstalk con acciones de GitHub

Además de usar EB CLI, usar GitHub Actions es otra forma conveniente de implementar su contenedor Docker en Elastic Beanstalk. GitHub Actions te permite automatizar cosas repetitivas durante el desarrollo. Con GitHub Actions, configura las instrucciones y las envía a GitHub.

Por el momento, cuando realiza cambios, ejecuta el comando de implementación usted mismo. Pero en esta demostración, configurará GitHub Actions para ejecutar los comandos de implementación por usted.

Esta configuración es beneficiosa si está desarrollando una canalización que ejecuta pruebas y realiza otras comprobaciones.

1. Cree un directorio llamado .github/workflows en el directorio raíz de su proyecto. Este directorio es donde almacenará su archivo de flujo de trabajo.

2. A continuación, cree un archivo con su nombre preferido en el directorio .github/workflows. Pero para este ejemplo, el archivo se llama main.yml .

Copie y pegue el siguiente código en main.yml archivo, que realiza lo siguiente:

  • Crea un trabajo que recibe el último envío a su repositorio y lo comprime (Elastic Beanstalk requiere que comprima la carpeta de su proyecto).
  • Da formato a la marca de tiempo y utiliza las marcas de tiempo formateadas como etiqueta de versión.
  • Implemente el repositorio en Elastic Beanstalk.
name: Deployment From Github To AWS
on:
  # activates the workflow when there is a push on the main branch
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest # the operating system your job will run on
    steps:
      - name: Checkout Latest Repo
        # checks out your repository under the GitHub workspace so that your workflow can access it
        uses: actions/[email protected]
        
      - name: Generate Deployment Package 
        # zip all files except .git
        run: zip -r deploy.zip * -x '*.git*'

      - name: Get timestamp
        uses: gerred/actions/[email protected]
        id: current-time
        
      - name: Run string replace
        uses: frabert/[email protected]
        id: format-time
        with:
          # replaces '[:\.]+' in the timestamp with '-'
          pattern: '[:\.]+'
          string: "${{ steps.current-time.outputs.time }}"
          replace-with: '-'
          flags: 'g'
          
      - name: Deploy to EB
        uses: einaregilsson/[email protected]
        with:
					# Input the credentials you used to setup AWS CLI and credentials for the application environment
          aws_access_key: AKIATI3RC11111YQ3TAU
          aws_secret_key: Urr46HfaaaaaabbbbbcccaC/+YpWFtJFbRQN27xF
          application_name: html
          environment_name: html-dev3
          version_label: "${{ steps.format-time.outputs.replaced }}"
          region: us-west-2
          deployment_package: deploy.zip

Normalmente, en un proyecto en vivo, querrás poner las credenciales en GitHub Secrets.

3. Ejecute los siguientes comandos en la raíz de su proyecto para confirmar y enviar el código a su repositorio de GitHub.

git add . # adds changes to staging area
git commit -m "update" # commits your changes
git push # Push to GitHub

4. Ahora, abra su navegador web y navegue hasta su proyecto en GitHub. Haga clic en Acciones pestaña, luego haga clic en su confirmación actual.

Similar a la imagen a continuación, puede confirmar que su aplicación está implementada.

5. Finalmente, ejecute el siguiente comando para ejecutar su aplicación.

eb open

A continuación, puede ver que GitHub Actions implementó correctamente los cambios.

Conclusión

A lo largo de este tutorial, aprendió cómo implementar una aplicación en Elastic Beanstalk a través de la terminal con EB CLI y GitHub Actions.

A estas alturas, ya conoce diferentes formas de implementar su aplicación en Elastic beanstalk, por lo que puede elegir cuál se adapta mejor a sus necesidades.

¿Cómo piensa aprovechar este nuevo conocimiento? ¿Quizás implementar una aplicación completa?


Docker
  1. Cómo implementar un contenedor nginx con Docker en Linode

  2. Cómo instalar Docker e implementar una pila LAMP

  3. Cómo usar SSH en un contenedor Docker

  4. Cómo instalar Vim en un contenedor Docker

  5. Cómo salir de un contenedor Docker

Cómo ejecutar PHPMyAdmin en un contenedor Docker

Cómo ejecutar Grafana en un contenedor Docker

Cómo implementar y administrar un contenedor Docker MongoDB

Cómo configurar un contenedor Apache Docker

Cómo ejecutar contenedores Docker

Cómo implementar un contenedor Docker en Jelastic Cloud