GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come distribuire un container Docker in AWS Elastic Beanstalk

Hai bisogno di automatizzare la distribuzione del container Docker? Hai sentito parlare di AWS Elastic Beanstalk? AWS Elastic Beanstalk è un altro servizio eccellente per la distribuzione e il ridimensionamento di applicazioni e servizi Web.

In questo tutorial imparerai come distribuire un'applicazione su AWS Elastic Beanstalk utilizzando EB CLI e GitHub Actions.

Pronto? Continua a leggere e inizia a ridimensionare le tue applicazioni!

Prerequisiti

Questo tutorial sarà una dimostrazione pratica. Se desideri continuare, assicurati di avere quanto segue:

  • AWS Command-Line Interface (CLI) – Questo tutorial utilizza AWS CLI v2.
  • Utente AWS con autorizzazione Elastic Beanstalk.
  • EB CLI v3.14.6 installato
  • Un account GitHub e un repository GitHub già configurato.

Creazione di un host Web statico Docker

Per dimostrare come distribuire un container Docker, avrai prima bisogno di un'app da distribuire. E per questa demo utilizzerai un file HTML.

1. Esegui git clone comando seguente per clonare un file HTML da un repository GitHub.

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

2. Quindi, crea un Dockerfile con il tuo editor di testo preferito nella radice del repository che hai clonato (passaggio uno) e popola il file con il codice seguente.

Il codice seguente mostra l'output del codice 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. Esegui il docker build comando seguente per creare un contenitore Docker del tuo file HTML chiamato html nella directory di lavoro.

docker build -t html .

4. Ora, esegui docker run comando seguente per eseguire il contenitore Docker (html ) che hai creato in precedenza (passaggio tre).

Il --name flag dice a Docker il nome (justhtml ) da utilizzare quando si fa riferimento al contenitore all'interno della rete. Mentre il -p flag mappa la porta del tuo localhost (8080 ) al porto del container Docker (80 ).

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

5. Infine, apri il tuo browser web e vai a http://localhost:8080/ per verificare di poter accedere al contenitore Docker (HTML).

Se tutto funziona bene, vedrai la pagina HTML mostrata di seguito.

Distribuzione dell'applicazione su Elastic Beanstalk tramite l'AWS CLI

Hai verificato che il tuo container Docker sia accessibile sul tuo host, quindi è il momento di distribuire la tua applicazione su AWS Elastic Beanstalk. Utilizzerai l'interfaccia a riga di comando EB per distribuire il tuo container Docker (html) in AWS Elastic Beanstalk.

Supponendo che tu abbia già configurato l'AWS CLI, non devi fare nulla per configurare l'EB CLI. Come mai? EB CLI utilizza le stesse credenziali di AWS CLI.

1. Esegui eb init comando seguente per inizializzare un ambiente Elastic Beanstalk per il tuo progetto. L'ambiente consente a Elastic Beanstalk di identificare il tipo di applicazione che desideri distribuire.

eb init

Dopo aver eseguito il comando, riceverai una richiesta per compilare i dettagli. Di seguito, per questo esempio sono state utilizzate le seguenti opzioni.

  • Regione predefinita: 3
  • Nome dell'applicazione: html
  • Sembra che tu stia utilizzando Docker. È corretto? Y
  • Seleziona un ramo della piattaforma: 1
  • Vuoi continuare con CodeCommit? N
  • Vuoi configurare SSH per le tue istanze? N

2. Quindi, esegui eb create comando seguente per creare un ambiente per la tua applicazione su Elastic Beanstalk. Fondamentalmente, distribuisci la tua applicazione ed Elastic Beanstalk gestirà il resto come il bilanciamento del carico

Se Git è stato inizializzato nel tuo progetto, assicurati di eseguire il commit di tutte le modifiche prima di creare un'applicazione su Elastic Beanstalk. Come mai? EB CLI utilizza l'archivio Git del commit più recente.

eb create

Premi Invio per utilizzare il valore predefinito per un Nome ambiente , Prefisso DNS CNAME e tipo di bilanciamento del carico dato che stai lavorando solo su un'app HTML.

Ma quando ti viene chiesto di abilitare le richieste Spot Fleet, digita n , poiché questa opzione fornisce istanze on demand facoltative che non sono necessarie qui, quindi premi Invio.

Un gruppo con scalabilità automatica viene fornito automaticamente quando hai eseguito per la prima volta eb create comando.

I trigger predefiniti aumentano quando il traffico di rete medio in uscita da ciascuna istanza è superiore a 6 MB e diminuiscono quando il traffico di rete in uscita è inferiore a 2 MB in un periodo di cinque minuti.

Dato che la tua applicazione è solo HTML, è improbabile che si verifichi il ridimensionamento dell'applicazione.

3. Infine, esegui eb open comando seguente per aprire l'applicazione sul browser Web predefinito direttamente da Elastic Beanstalk.

eb open

Verifica dell'applicazione AWS Elastic Beanstalk

Ora che hai distribuito la tua applicazione, vedrai tutte le utili funzionalità aggiunte alla tua applicazione. Per prima cosa verificherai dove Elastic Beanstalk ha archiviato il file dell'applicazione.

Per avere accesso al file dell'applicazione:

1. Accedi alla console AWS con l'utente aggiunto nella configurazione dell'AWS CLI.

2. Fare clic su Tutto Servizi menu a discesa, fai clic su Archiviazione scheda, quindi seleziona S3 .

3. Nella dashboard di S3, fare clic sul progetto per visualizzare le informazioni sull'applicazione.

Come mostrato di seguito, vedi la tua applicazione negli Oggetti elenco.

4. Infine, fai clic sull'elenco a discesa Tutti i servizi e fai clic sulla scheda Calcola, quindi seleziona EC2 per accedere alla dashboard di EC2 .

Nella dashboard EC2, puoi vedere le risorse EC2 che eseguono la tua applicazione, in modo simile a quello riportato di seguito. Ma attenzione, i dati di seguito potrebbero differire dai tuoi.

Inoltre, puoi eseguire eb status comando qui sotto per vedere maggiori dettagli sulla tua applicazione.

eb status

Aggiornamento di un'applicazione AWS Elastic Beanstalk

Quando sono state apportate modifiche alla tua applicazione, dovrai eseguire eb deploy il comando per creare e distribuire un'altra versione della tua applicazione.

Apri il tuo file HTML (index.html ) e sostituisci quello che hai nel <style> tagga con quello qui sotto. Il codice seguente cambia il colore di sfondo della tua applicazione.

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

Ora, esegui i seguenti comandi per deploy le modifiche e open la tua applicazione sul tuo browser web.

eb deploy
eb open

Al termine della distribuzione, l'applicazione si apre automaticamente nel browser con le nuove modifiche apportate.

Distribuzione dell'applicazione su Elastic Beanstalk con GitHub Actions

Oltre all'utilizzo di EB CLI, l'utilizzo di GitHub Actions è un altro modo conveniente per distribuire il container Docker su Elastic Beanstalk. GitHub Actions ti consente di automatizzare le cose ripetitive durante lo sviluppo. Con GitHub Actions, imposti le istruzioni e le invii a GitHub.

Al momento, quando apporti modifiche, esegui tu stesso il comando di distribuzione. Ma in questa demo, imposterai GitHub Actions per eseguire i comandi di distribuzione per te.

Questa configurazione è utile se stai sviluppando una pipeline che esegue test ed esegue altri controlli.

1. Crea una directory denominata .github/workflows nella directory principale del tuo progetto. Questa directory è dove memorizzerai il tuo file di flusso di lavoro.

2. Successivamente, crea un file con il tuo nome preferito nella directory .github/workflows. Ma per questo esempio, il file si chiama main.yml .

Copia e incolla il codice qui sotto in main.yml file, che esegue le seguenti operazioni:

  • Crea un lavoro che ottiene l'ultimo push al tuo repository e lo comprime (Elastic Beanstalk richiede di comprimere la cartella del progetto).
  • Formatta il timestamp e utilizza i timestamp formattati come etichetta della versione.
  • Distribuisci il repository su 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

In genere, in un progetto live, vorresti inserire le credenziali in GitHub Secrets.

3. Esegui i seguenti comandi sulla radice del tuo progetto per eseguire il commit e inviare il codice al tuo repository GitHub.

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

4. Ora apri il tuo browser web e vai al tuo progetto su GitHub. Fai clic su Azioni scheda, quindi fai clic sul tuo commit corrente.

Come nell'immagine seguente, puoi confermare che la tua applicazione è stata distribuita.

5. Infine, esegui il comando seguente per eseguire l'applicazione.

eb open

Di seguito, puoi vedere che le azioni GitHub hanno distribuito correttamente le modifiche.

Conclusione

Durante questo tutorial, hai imparato come distribuire un'applicazione su Elastic Beanstalk tramite il terminale con EB CLI e GitHub Actions.

Ormai conosci già diversi modi per distribuire la tua applicazione su Elastic Beanstalk, quindi puoi scegliere quella più adatta alle tue esigenze.

Come pensi di costruire su questa nuova conoscenza? Forse stai implementando un'applicazione a tutti gli effetti?


Docker
  1. Come distribuire un container nginx con Docker su Linode

  2. Come assegnare un IP statico a un contenitore Docker

  3. Come distribuire PostgreSQL come contenitore Docker

  4. Come elencare i contenitori Docker

  5. Come uscire da un container Docker

Come eseguire PHPMyAdmin in un contenitore Docker

Come eseguire Grafana in un contenitore Docker

Come distribuire e gestire un contenitore Docker MongoDB

Come configurare un container Docker Apache

Come eseguire i contenitori Docker

Come distribuire il container Docker su Jelastic Cloud